7
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 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()

最初の 2 行で、何が起こっているのかある程度わかりますが、これは重要なように思われるので、完全に理解したいと思います。

4

3 に答える 3

18

を実行すると、またはimport sysを介し​​てモジュール sys の関数と変数にアクセスできるようになります。これは、特にサブモジュールから何かを使用する場合 (たとえば、頻繁にアクセスする必要がある場合)、多くのタイピングを取得する可能性があります。このような冗長性を避けるために、変数と関数の 1 つ、多く、またはすべてをグローバル スコープに入れることができます。常に先頭に追加しなくても、関数を使用できます。sys.foosys.bar()django.contrib.auth.models.Userfrom os.path import existsexists()os.path.

os.path から複数の変数または関数をインポートしたい場合は、 from os.path import foo, bar.

理論的にはすべての変数と関数を でインポートできますがfrom os.path import *、ローカル変数や関数を上書きしたり、インポートしたものを隠したりする可能性があるため、一般的には推奨されません。「import foo」と「from foo import *」の違いは何ですか?を参照してください。説明のために。

于 2012-07-06T12:27:04.467 に答える
9
from module import x

意味:

、という名前のモジュールをロードしますが、現在の名前空間にmoduleのみフェッチします。x

于 2012-07-06T12:27:11.427 に答える