sys.argv[1] + "string"
で参照されるいくつかのファイルを開くことを目的とする以下のプログラムを検討してください。実行(Pythonの3.6はWindows 7)でWindows上のPythonでsys.argv経由で提供されたパスで指定されたファイルを開きますか?
import sys
def searchAndReplacePath(path):
filesToSearch = [path + "\main\file1.txt",
path + "\main\folder\file2.txt"]
for files in filesToSearch:
with open(files, 'r') as inFile:
filedata = inFile.readlines()
if __name__ == "__main__":
# sys.argv[1] -- Specify which path should be used
searchAndReplacePath(sys.argv[1])
私はエラーが表示されます。
Traceback (most recent call last):
File "searchAndReplacePath.py", line 35, in <module>
searchAndReplacePath(sys.argv[1])
File "searchAndReplacePath.py", line 19, in searchAndReplacePath
with open(file, 'r') as inFile:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\user\\main\\file1.txt'
Pythonは私のバックスラッシュにバックスラッシュを追加します!リストを反復して、リスト内の各項目をprint()
とすると、「単一のバックスラッシュ」が得られるので、何をすべきかはわかりません。私はraw strings
と使用方法について多くを読んでいます:r"path\to\file"
しかし、私はsys.argv []から私の入力を取るので、私は実際にどのように同じ結果を達成するために今はありません。
WindowsのPythonでsys.argv[]
で指定されたパスで指定されたファイルを開くにはどうすればよいですか?
"\"は多くのプログラミング言語で特殊文字です。例えば。 '\ n'は"改行 "を、\ tは"タブ "を生成します。したがって、 "\\"を含む文字列は "\"を出力します。指定された場所に2つのファイルが存在しますか? –
これを見て、それはあなたを助けることができます:https://learnpythonthehardway.org/book/ex10.html 二重バックスラッシュはPythonの特別な文字であり、単に文字列として置くことはできません。 – Artur
私は完全に認識しています、ありがとうございます。現在の問題は、Pythonが '\'とsys.argを私の期待通りに扱わないことに関連しています。 – GLaDER