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

    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   ·   实用小工具   ·   1213 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 18:30 · PVG 02:30 · LAX 10:30 · JFK 13:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.