在python中,我怎么能将这三行代码变成一行代码?

And*_*lam 4 python copy

这是代码

from sys import argv
script,from_file, to_file = argv
open(to_file,'w').write(open(from_file).read())
Run Code Online (Sandbox Code Playgroud)

我是python的新手,我正在努力学习Python,对于一个问题的额外功劳,它说这本书的作者能够将代码排成一行,所以我设法将其归结为3行,但我卡住了.

关心帮忙?

哦,代码将一个文件的内容复制到另一个文件,或者它的意思是.那是我的目标.

Kat*_*iel 9

可以将其作为一个表达式执行,即不需要分号:

__import__('shutil').copy(__import__('sys').argv[1], __import__('sys').argv[2])
Run Code Online (Sandbox Code Playgroud)

要么

open(__import__('sys').argv[2], "w").write(open(__import__('sys').argv[1]).read())
Run Code Online (Sandbox Code Playgroud)

当然,没有一个心智正常的人会更喜欢你的示例代码.我要做的唯一改变是没有理由将文件名分配给临时变量:

from sys import argv
open(argv[1],'w').write(open(argv[2]).read())
Run Code Online (Sandbox Code Playgroud)

更Pythonic的写作方式是:

import sys
with open(sys.argv[1]) as src, open(sys.argv[2]) as dest:
    for line in src:
        dest.write(line)
Run Code Online (Sandbox Code Playgroud)

然后你就可以开始argparse使命令行阅读更加健壮......


Daw*_*uss 6

您可以使用分号将import语句保留在同一行.并直接引用argv中的项而不是使用变量.

from sys import argv; open(argv[2],'w').write(open(argv[1]).read())
Run Code Online (Sandbox Code Playgroud)