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

Python 为什么我的代码返回脚本路径而不是绝对文件路径?,python,for-loop,path,os.walk,Python,For Loop,Path,Os.walk,我在Python中遇到了一个让我发疯的小问题。我的代码由一个非常简单的os.walk()函数组成,该函数用于查找测试文件夹中的所有文件及其路径(此测试文件夹由多个子文件夹组成) 现在,当我运行代码时,它会打印正确的文件名。但是,即使我使用了os.path.abspath()语句,返回的文件路径始终是我的pycharm项目的脚本路径,也就是说“C:\Users\j2the\PycharmProjects\…” 那么,为什么Python返回脚本路径而不是文件的绝对路径,它应该类似于“C:\Users

我在Python中遇到了一个让我发疯的小问题。我的代码由一个非常简单的
os.walk()
函数组成,该函数用于查找测试文件夹中的所有文件及其路径(此测试文件夹由多个子文件夹组成)

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

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

注意:我的Pycharm配置不会有问题,因为我在空闲时运行了相同的代码,它仍然返回脚本路径


提前感谢您的帮助!:)

变量
e
只是一个文件名字符串。它不包含任何关于它在哪里的信息。如果我们将其与:

返回路径名路径的规范化绝对化版本。在大多数平台上,这相当于调用函数normpath(),如下所示:normpath(join(os.getcwd(),path))

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

看一看,我们可以看到:

dirpath是一个字符串,指向目录的路径。dirnames是dirpath中子目录的名称列表(不包括“.”和“..”)。filenames是dirpath中非目录文件的名称列表。请注意,列表中的名称不包含路径组件要获取dirpath中文件或目录的完整路径(以top开头),请执行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)))

非常感谢你。这绝对是一个美妙而完美的答案!:)
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)))