我正在通过 sys.argv 传递文件名,带有斜杠而不是反斜杠。我正在使用os.path.normpath和os.path.join,但是当尝试打开文件时,我得到一个异常,没有这样的文件或目录:并且路径带有双反斜杠。我正在寻找解决方案几个小时,但没有任何效果。
我尝试了我在谷歌上可以找到的所有教程,但我总是遇到同样的问题。我只是不断得到双反斜杠。我也尝试过像示例中那样对路径进行硬编码。
filepath = os.path.normpath(os.path.join('D:/dir1/dir2/dir3', 'myfile.txt'))
try:
my_file = open(filepath, 'w+')
except Exception as e:
print('Cannot create/open file w+!n{}'.format(e))
我需要能够打开文件。
在python脚本中,它适用于:
file_path = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'config.ini')
但是如果我需要使用py2exe构建一个程序,则该__file__
不起作用,我使用:
file_path = os.path.join(os.path.abspath(os.path.dirname(sys.argv[0])), 'config.ini')
希望这对某人有所帮助。
我更愿意将我的文件保存在结构化格式中,其中我的主脚本将位于根文件夹中。从某种意义上说,这种方法变得更加通用,因为如果您尝试在具有不同操作系统的其他系统上运行相同的内容,则路径将引发问题。
例
Project
|-- main.py
|-- files
|--file1.txt
|--file2.txt
然后,您可以通过以下方式简单地访问文件
with open("files/file1.txt", 'w+') as file_object:
content = file_object.readlines() # Whatever the method
窗口的文件路径之前添加 r。
guests = open(r"C:folderguests.txt","w")
initial_guests = ["Bob", "Andrea", "Manuel", "Polly", "Khalid"]
for i in initial_guests:
guests.write(i + "n")
guests.close()