0

我在 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 打印出它正在寻找的文件,并且一切正常(但是它已经将 ../ 等变成了绝对路径名)。

我有一种感觉,某处可能已经损坏了。有任何想法吗?

拉斯

4

3 回答 3

0

os.path.exists() 不检查您作为参数传递的路径是否存在?您是否正在尝试查看文件是否存在?

于 2012-05-18T03:49:47.180 回答
0

您需要将这些相对引用解析为正确的扩展路径。

import os

relative = "../"
print os.path.abspath(relative)
# /Users/jdi

它可以处理当前目录中的文件,因为它不需要解决任何问题。但是需要扩展shell路径。

于 2012-05-18T03:42:05.267 回答
0

据我了解,Python 不理解像“波浪号”这样的 Unix 快捷方式:

~/Downloads

不起作用但这会:

/home/Castro/Downloads

这能解决您的问题吗?

于 2012-05-20T16:51:24.347 回答