我需要列出python目录中文件的绝对路径3.7.5
。现在的问题是,此处指定的解决方案都不起作用:
可能是因为我登录到其他用户并且我的主目录更改了: sudo su - my_user_name
此类解决方案:
files = [Path(x).absolute() for x in os.listdir(source_folder)]
或者
files = [os.path.abspath(x) for x in os.listdir(source_folder)]
结果是将当前的工作目录附加到正确找到的文件名中。因此,如果我列出目录:(/other_home/data/gene_data
其中有一个名为的文件my_file.tsv
),但是我在其中/new_home/def/cram/my_project_name
,则上述解决方案会产生路径:,/new_home/def/cram/my_project_name/my_file.tsv
而不是/other_home/data/gene_data/my_file.tsv
。还有办法实现吗?
os.listdir
返回不带路径的文件名,这使它成为基于的相对路径source_folder
。os.path.abspath
不知道source_folder
。它所知道的只是当前的工作目录。因此,假设CWD是你要设为绝对的相对路径。
你可以在使其成为绝对路径之前加入已知路径组件
files = [os.path.abspath(os.path.join(source_folder, x))
for x in os.listdir(source_folder)]
使用时,Path
你也会遇到类似的问题。你是从缺少路径部分的文件名创建路径的,因此Path
假设你的意思是当前的工作目录。而是Path
为你执行目录枚举,以便它传递回适当的合格Path
对象。
files = [x.absolute() for x in Path(source_folder).glob("*")]