请把下列代码改成一行代码,请让我见证奇迹,好吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
zyqf
V2EX    Python

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

  •  
  •   zyqf 2015-08-04 21:33:26 +08:00 4293 次点击
    这是一个创建于 3726 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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()

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

    第 1 条附言    2015-08-04 23:04:12 +08:00
    只能这样写了,实在没办法做到一行代码
    from sys import argv
    open(argv[2], 'w').write(open(argv[1]).read())
    21 条回复    2016-04-23 04:17:46 +08:00
    zyqf
        2
    zyqf  
    OP
       2015-08-04 21:40:15 +08:00
    @hahastudio
    from sys import argv
    script, from_file, to_file = argv

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

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

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

    from sys import argv
    open(argv[2], 'w').write(open(argv[1]).read())
    zhuangzhuang1988
        18
    zhuangzhuang1988  
       2015-08-06 11:12:51 +08:00
    再怎么复杂的代码都能 exec "from sys import argv;open(argv[2], 'w').write(open(argv[1]).read())"
    WKPlus
        19
    WKPlus  
       2015-08-06 13:53:03 +08:00
    最后的写法,文件都没关闭。干嘛非要一行写呢,又不是越少越优雅
    saber000
        20
    saber000  
       2015-08-06 17:29:08 +08:00
    open(__import__("sys").argv[2], "wb").writelines(open(__import__("sys").argv[1]))
    goldalan
        21
    goldalan  
       2016-04-23 04:17:46 +08:00
    from sys import argv;open(argv[2], 'w').write(open(argv[1]).read());print("Great")
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5373 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 08:38 PVG 16:38 LAX 01:38 JFK 04:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86