使用 os.walk 的循环仅运行第一个循环
Loop using os.walk only runs the first cycle
我正在尝试获取列表中的一组文件的路径。这些文件位于不同的子文件夹中。我正在使用 os.walk
并通过不同的文件循环到 运行 并将完整路径附加到新的数据帧以在不同的程序中使用。但是代码中有一个错误,只使它 运行 成为循环的第一个循环。
代码基于此线程:Need the path for particular files using os.walk()
我在 MacOS10.14.6
上使用 python3.6
我不确定这是否重要,但目录位于外部硬盘驱动器上。
import pandas as pd
import os
dir = "/Volumes/dir1/dir2"
fastafiles = ["file1", "file2", "file3"]
fastafiles_df = pd.DataFrame(fastafiles)
fasta_paths = []
for fasta in fastafiles_df[0]:
#1
for dir, subdirs, files in os.walk(dir):
for file in files:
if file.endswith(fasta):
#2
fasta_paths.append(os.path.join(dir, file))
#3
运行 代码将在 fasta_paths
中给我 1 个条目,只有第一个文件的路径。
如果我 print(fasta)
在 #1 我从我的数据框中得到所有 3 个文件名。
如果我在#2 print(file)
我只会得到 1 个文件名
如果我 print fasta_paths
在 #3 我会得到第一个文件的路径。
谁能指出循环不继续的原因。
我猜这个错误是由于 dir
在解压缩和遍历 os.walk
生成器对象时用于表示根目录和参数导致的名称空间崩溃。
不过,请记住 dir
是 Python 标准库的名称,尽量不要使用此类变量名。
你能试试改个变量名吗?
import pandas as pd
import os
root_dir = "/Volumes/dir1/dir2"
fastafiles = ["file1", "file2", "file3"]
fastafiles_df = pd.DataFrame(fastafiles)
fasta_paths = []
for fasta in fastafiles_df[0]:
#1
for curr_dir, subdirs, files in os.walk(root_dir):
for file in files:
if file.endswith(fasta):
#2
fasta_paths.append(os.path.join(curr_dir, file))
我正在尝试获取列表中的一组文件的路径。这些文件位于不同的子文件夹中。我正在使用 os.walk
并通过不同的文件循环到 运行 并将完整路径附加到新的数据帧以在不同的程序中使用。但是代码中有一个错误,只使它 运行 成为循环的第一个循环。
代码基于此线程:Need the path for particular files using os.walk()
我在 MacOS10.14.6
上使用 python3.6
我不确定这是否重要,但目录位于外部硬盘驱动器上。
import pandas as pd
import os
dir = "/Volumes/dir1/dir2"
fastafiles = ["file1", "file2", "file3"]
fastafiles_df = pd.DataFrame(fastafiles)
fasta_paths = []
for fasta in fastafiles_df[0]:
#1
for dir, subdirs, files in os.walk(dir):
for file in files:
if file.endswith(fasta):
#2
fasta_paths.append(os.path.join(dir, file))
#3
运行 代码将在 fasta_paths
中给我 1 个条目,只有第一个文件的路径。
如果我 print(fasta)
在 #1 我从我的数据框中得到所有 3 个文件名。
如果我在#2 print(file)
我只会得到 1 个文件名
如果我 print fasta_paths
在 #3 我会得到第一个文件的路径。
谁能指出循环不继续的原因。
我猜这个错误是由于 dir
在解压缩和遍历 os.walk
生成器对象时用于表示根目录和参数导致的名称空间崩溃。
不过,请记住 dir
是 Python 标准库的名称,尽量不要使用此类变量名。
你能试试改个变量名吗?
import pandas as pd
import os
root_dir = "/Volumes/dir1/dir2"
fastafiles = ["file1", "file2", "file3"]
fastafiles_df = pd.DataFrame(fastafiles)
fasta_paths = []
for fasta in fastafiles_df[0]:
#1
for curr_dir, subdirs, files in os.walk(root_dir):
for file in files:
if file.endswith(fasta):
#2
fasta_paths.append(os.path.join(curr_dir, file))