[英]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()
表示列表中的每个项目,那么我将得到“单个反斜杠”,因此我真的不知道该怎么做。 我已经阅读了很多有关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程序中的形式显示该值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.