打开由 Windows 上 Python 中的 sys.argv 提供的路径指定的文件?
Open files, specified by a path provided via sys.argv in Python on Windows?
考虑下面的程序,其目的是打开一些文件,由 sys.argv[1] + "string"
引用。
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])
在执行时(Python 3.6,Windows 7)我收到一个错误:
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()
所述列表中的每个项目,我得到 "single backslashes",所以我真的不知道该怎么做。我已经阅读了很多关于 raw strings
以及如何使用:r"path\to\file"
的内容,但是由于我从 sys.argv[] 获得了我的意见,所以我现在真的不知道如何获得相同的结果。
如何打开由 Windows 上 Python 中的 sys.argv[]
提供的路径指定的文件?
尝试使用 python 的 os
模块:
import os
files_to_search = [os.path.join(path, 'main\file1.txt') ... ]
这里的问题出现在下面的交互会话中:
>>> "\f"
'\x0c'
>>> '\f'
'\f'
>>> r'\f'
'\\f'
>>> '\f'
'\x0c'
>>> r'\f'
'\f'
>>>
如您所见,当解释器打印字符串的 repr
时,它引用反斜杠以反映 Python 来源。 '\f'
是单个字符,而不是两个。打印文件名时,解释器使用其 repr()
.
另外,请注意这个区别:
>>> print('\"')
"
>>> '\"'
'"'
您会看到 repr()
在值周围添加了引号,显示它就像在 Python 程序中表示的那样。
考虑下面的程序,其目的是打开一些文件,由 sys.argv[1] + "string"
引用。
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])
在执行时(Python 3.6,Windows 7)我收到一个错误:
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()
所述列表中的每个项目,我得到 "single backslashes",所以我真的不知道该怎么做。我已经阅读了很多关于 raw strings
以及如何使用:r"path\to\file"
的内容,但是由于我从 sys.argv[] 获得了我的意见,所以我现在真的不知道如何获得相同的结果。
如何打开由 Windows 上 Python 中的 sys.argv[]
提供的路径指定的文件?
尝试使用 python 的 os
模块:
import os
files_to_search = [os.path.join(path, 'main\file1.txt') ... ]
这里的问题出现在下面的交互会话中:
>>> "\f"
'\x0c'
>>> '\f'
'\f'
>>> r'\f'
'\\f'
>>> '\f'
'\x0c'
>>> r'\f'
'\f'
>>>
如您所见,当解释器打印字符串的 repr
时,它引用反斜杠以反映 Python 来源。 '\f'
是单个字符,而不是两个。打印文件名时,解释器使用其 repr()
.
另外,请注意这个区别:
>>> print('\"')
"
>>> '\"'
'"'
您会看到 repr()
在值周围添加了引号,显示它就像在 Python 程序中表示的那样。