gpt4 book ai didi

python - 为什么我的代码返回脚本路径而不是绝对文件路径?

转载 作者:行者123 更新时间:2023-12-01 07:19:24 26 4
gpt4 key购买 nike

我在 Python 中遇到了一个让我抓狂的小问题。我的代码由一个非常简单的 os.walk() 组成函数应该查找测试文件夹中的所有文件及其路径(该测试文件夹由各种子文件夹组成)。

import os

src=r"C:\Users\j2the\Documents\Test3"

for dirpath,dirnames,filenames in os.walk(src):
for e in filenames:
print(e)
print(os.path.abspath(e))

现在,当我运行代码时,它确实打印了正确的文件名。然而,即使我使用了 os.path.abspath()语句,返回的文件路径始终是我的pycharm项目的脚本路径,即"C:\Users\j2the\PycharmProjects\..."

那么为什么Python返回脚本路径而不是文件的绝对路径,它应该类似于"C:\Users\j2the\Documents\Test3\..."

注意:我的 Pycharm 配置不可能是问题,因为我在 IDLE 上运行了相同的代码,它仍然返回脚本路径

预先感谢您的帮助! :)

最佳答案

变量e只是一个文件名字符串。它不包含任何有关其位置的信息。如果我们将其与 the documentation of abspath 结合起来:

Return a normalized absolutized version of the pathname path. On most platforms, this is equivalent to calling the function normpath() as follows: normpath(join(os.getcwd(), path)).

因此path等于e,它只是一个文件名,比如my_file.txt。 os.getcwd() 是运行脚本的路径。

查看the documentation for os.walk ,我们可以看到:

dirpath is a string, the path to the directory. dirnames is a list of the names of the subdirectories in dirpath (excluding '.' and '..'). filenames is a list of the names of the non-directory files in dirpath. Note that the names in the lists contain no path components. To get a full path (which begins with top) to a file or directory in dirpath, do os.path.join(dirpath, name).

* 我的重点

现在我们可以结合这两个知识并产生这个:

import os

src=r"C:\Users\j2the\Documents\Test3"

for dirpath,dirnames,filenames in os.walk(src):
for e in filenames:
print(e)
print(os.path.abspath(os.path.join(dirpath, e)))

关于python - 为什么我的代码返回脚本路径而不是绝对文件路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57777358/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com