I'm doing Zed Shaw's fantastic Learn Python The Hard Way, but an extra question has me stumped: Line 9--10 could be written in one line, how? I've tried some different thoughts, but to no avail. I could move on, but what would the fun in that be?
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."
Zed also writes that he could do the whole script in one line. I'm not exactly sure what he means by that.
Feel free to help me however you want: by giving the answer or merely hinting---and perhaps including a collapsed or hidden answer to the question.
shutil - это способ делать однострочные копии файлов в Python:
shutil.copy(sys.argv[1], sys.argv[2])
Помещение import shutil, sys
в ту же строку, что и эта (с точкой с запятой между ними, конечно) было бы стилистически глупо ;-).
Ну, вы можете просто сделать «алгебраическую подстановку», верно? ... предполагая, что вас не волнует "UI" ...
open(to_file, 'w').write(open(from_file).read())