我在Cygwin的命令提示符下运行python (2.7)。我通常将一个文件名传递给我的python代码,并使用: sys.argv1检索该文件名。在打开文件之前,我让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变成了一个absloute路径名)。
我有一种感觉,那东西可能在什么地方被破坏了。有什么想法吗?
拉斯
发布于 2012-05-18 11:42:05
您需要将这些相对引用解析为适当的扩展路径。
import os
relative = "../"
print os.path.abspath(relative)
# /Users/jdi它可以处理你当前目录中的文件,因为它不需要解析任何东西。但是shell路径需要扩展。
发布于 2012-05-18 11:49:47
os.path.exists()不检查您作为参数传递的路径是否存在吗?您是否正在尝试查看文件是否存在?
发布于 2012-05-21 00:51:24
据我所知,Python不能理解Unix的快捷键,比如“代字号”:
~/Downloads不会起作用,但这会起作用:
/home/Castro/Downloads这解决了你的问题吗?
https://stackoverflow.com/questions/10646389
复制相似问题