从命令行获取具有相对或绝对路径的文件句柄的pythonic方法是什么?

时间:2019-04-05 17:31:07

标签: python python-3.x

当我用python编写命令行脚本时,我假设可以从任何地方调用它。当我想将文件列表传递到脚本中时,这似乎导致不一致。

使用列表或通配符传递文件(无论是在Windows的* nix或glob.glob中由bash扩展),都将返回相对路径或绝对路径,具体取决于文件路径的描述方式,但这似乎给出必须检查或协调的两种不同行为。

如果脚本与要导入的文件位于同一目录中,则这并不是真正的问题,但是如果脚本位于不同的目录中,则似乎需要首先获取绝对路径:

import os,sys,glob

for arg in sys.argv[1:]:
    file_list = glob.glob(arg)
    for fn in file_list:
        print("File Reference: {}".format(os.path.abspath(fn)))

> pwd
/Users/user1/Desktop/script_dir/

> cd ~/Desktop

> script_dir/test.py test_dir/*.csv /Users/user1/Desktop/test_dir/*.txt

File Reference: /Users/user1/Desktop/test_dir/temp1.csv
File Reference: /Users/user1/Desktop/test_dir/temp2.csv
File Reference: /Users/user1/Desktop/test_dir/temp1.txt
File Reference: /Users/user1/Desktop/test_dir/temp2.txt

假设程序继续对文件进行处理,则它将按绝对路径操作它们。这是正确的做法吗?似乎很奇怪,而且我似乎可以找到所有列出这一点的参考文献。

0 个答案:

没有答案