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 年 8 月 4 日 · 4436 次点击
    这是一个创建于 3815 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 年 8 月 4 日
    只能这样写了,实在没办法做到一行代码
    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 年 8 月 4 日
    @hahastudio
    from sys import argv
    script, from_file, to_file = argv

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

    原话是这样的。。。。。
    gamexg
        16
    gamexg  
       2015 年 8 月 4 日   ❤️ 1
    指的是这个?还是全部?

    print 'Copying from %s to %s'%(__import__('sys').argv[1:])
    zyqf
        17
    zyqf  
    OP
       2015 年 8 月 4 日
    @gamexg

    from sys import argv
    open(argv[2], 'w').write(open(argv[1]).read())
    zhuangzhuang1988
        18
    zhuangzhuang1988  
       2015 年 8 月 6 日
    再怎么复杂的代码都能 exec "from sys import argv;open(argv[2], 'w').write(open(argv[1]).read())"
    WKPlus
        19
    WKPlus  
       2015 年 8 月 6 日
    最后的写法,文件都没关闭。干嘛非要一行写呢,又不是越少越优雅
    saber000
        20
    saber000  
       2015 年 8 月 6 日
    open(__import__("sys").argv[2], "wb").writelines(open(__import__("sys").argv[1]))
    goldalan
        21
    goldalan  
       2016 年 4 月 23 日
    from sys import argv;open(argv[2], 'w').write(open(argv[1]).read());print("Great")
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5692 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 369ms · UTC 02:59 · PVG 10:59 · LAX 18:59 · JFK 21:59
    ♥ Do have faith in what you're doing.