请把下列代码改成一行代码,请让我见证奇迹,好吗?

2015-08-04 21:33:26 +08:00
 zyqf

from sys import argv
from os.path import exists

script, from_file, to_file = argv

print "Copying from %s to %s" % (from_file, to_file)

we could do these two on one line too, how?

input = open(from_file)
indata = input.read()

print "The input file is %d bytes long" % len(indata)

print "Does the output file exist? %r" % exists(to_file)
print "Ready, hit RETURN to continue, CTRL-C to abort."
raw_input()

output = open(to_file, 'w')
output.write(indata)

print "Alright, all done."

output.close()
input.close()

作者说,他能用一行代码写出来。。。。

3760 次点击
所在节点    Python
21 条回复
hahastudio
2015-08-04 21:36:19 +08:00
zyqf
2015-08-04 21:40:15 +08:00
@hahastudio
from sys import argv
script, from_file, to_file = argv

这2行代码是必须的吧?
ytf4425
2015-08-04 21:44:06 +08:00
外行人来欣赏艺术来了
看来码农也有码神啊
zyqf
2015-08-04 21:45:39 +08:00
@ytf4425 新手,正在学习python,实在是百度不到答案,迫不得已来v2ex求解
hahastudio
2015-08-04 21:47:53 +08:00
@zyqf 不嫌难看的话,你总可以用 ; 分隔
功能上讲的话,那些答案都说明了
expkzb
2015-08-04 21:51:23 +08:00
we could do these two on one line too, how?
意思不是把特指的两行变一行么
minvacai
2015-08-04 21:54:31 +08:00
cp from_file to_file #你够
zyqf
2015-08-04 22:07:51 +08:00
@minvacai 如果我没记错的话,这是linux命令吧。。。。
zyqf
2015-08-04 22:08:51 +08:00
@expkzb 书上的加分练习时说,把上面的代码改写成1行。 那个注释,不知道为什么#号没了,是另一个小练习
zyqf
2015-08-04 22:09:21 +08:00
@hahastudio 我还以为有什么复杂的写法呢。。。。
qw7692336
2015-08-04 22:10:37 +08:00
bububut
2015-08-04 22:11:26 +08:00
楼主需提高阅读理解水平,没让你把所有代码变成一行
leavic
2015-08-04 22:11:30 +08:00
lambda(语句1 and 语句2 and 语句3)
minvacai
2015-08-04 22:16:21 +08:00
@zyqf 果然当时应该写“(逃”
zyqf
2015-08-04 22:19:28 +08:00
@bububut 看看你能把这个脚本改多短,我可以把它写成一行。

原话是这样的。。。。。
gamexg
2015-08-04 22:40:14 +08:00
指的是这个?还是全部?

print 'Copying from %s to %s'%(__import__('sys').argv[1:])
zyqf
2015-08-04 23:00:33 +08:00
@gamexg

from sys import argv
open(argv[2], 'w').write(open(argv[1]).read())
zhuangzhuang1988
2015-08-06 11:12:51 +08:00
再怎么复杂的代码都能 exec "from sys import argv;open(argv[2], 'w').write(open(argv[1]).read())"
WKPlus
2015-08-06 13:53:03 +08:00
最后的写法,文件都没关闭。干嘛非要一行写呢,又不是越少越优雅
saber000
2015-08-06 17:29:08 +08:00
open(__import__("sys").argv[2], "wb").writelines(open(__import__("sys").argv[1]))

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/210811

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX