我正在Cygwin的命令提示符下运行python(2.7)。我通常将文件名传递给我的python代码并使用以下命令检索文件名:sys.argv [1]。我打开之前让python检查文件是否存在(使用os.path.exists)。
即使我将文件指定为“../dir1/dir2/file_name”,这也有效。截至今天,如果文件名包含路径,Python无法找到任何文件(即使它们都在那里)。
例如:对于名为dir_1的目录中的prog.py
python prog.py file.txt :::: works OK
python prog.py ../dir_1/file.txt :::: Fails
>pwd
......../dir_1
我一直收到“没有这样的文件或目录”的错误。我让Python打印出它正在寻找的文件,并且它具有一切正常(但它将../ etc转换为绝对路径名)。
我有一种感觉,某些地方可能已经腐败了。有什么想法吗?
拉斯
答案 0 :(得分:0)
您需要解析对适当扩展路径的相对引用。
import os
relative = "../"
print os.path.abspath(relative)
# /Users/jdi
它可以正常使用当前目录中的文件,因为它不需要解决任何问题。但是需要扩展shell路径。
答案 1 :(得分:0)
os.path.exists()不检查您作为参数传递的路径是否存在?你想看看文件是否存在?
答案 2 :(得分:0)
我的理解是Python不理解像'tilde'这样的Unix快捷方式:
~/Downloads
不行 但这会:
/home/Castro/Downloads
这会解决您的问题吗?