Learn Python the Hard Way Exercise 17 Extra Question(S)

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.

21
задан Kiwi 24 August 2010 в 23:00
поделиться

3 ответа

indata = open(from_file).read()
20
ответ дан 29 November 2019 в 20:31
поделиться

shutil - это способ делать однострочные копии файлов в Python:

shutil.copy(sys.argv[1], sys.argv[2])

Помещение import shutil, sys в ту же строку, что и эта (с точкой с запятой между ними, конечно) было бы стилистически глупо ;-).

8
ответ дан 29 November 2019 в 20:31
поделиться

Ну, вы можете просто сделать «алгебраическую подстановку», верно? ... предполагая, что вас не волнует "UI" ...

open(to_file, 'w').write(open(from_file).read())
6
ответ дан 29 November 2019 в 20:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: