【发布时间】:2019-11-26 06:58:10
【问题描述】:
我编写了一个简单的脚本来搜索一个目录中的文件类型并将其复制并移动到另一个目录。该脚本将在源目录中打印第一个搜索到的文件,但是当它进入 for 循环时,它会抛出 FileNotFoundError。有人可以看看这个并告诉我我做错了什么吗?我在路径中使用了单斜杠、正斜杠和反斜杠,现在我在路径前面使用带有r 的转义斜杠,这没关系,它仍然会出错。
import os
import fnmatch
import shutil
src = (r"C:\\Users\\myName\\Documents\\development")
dst = (r"C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Data\\myData")
print(os.listdir(src)) #this will display everything in the src directory.
for file_name in os.listdir(src):
if fnmatch.fnmatch(file_name, "*.ibd"):
print(file_name) #This will only print the first searched for file type.
shutil.copy2(file_name, dst) #if I comment out this line, it will print all .ibd files.
【问题讨论】:
-
您必须将文件夹添加到
file_name以获取文件的完整路径 -os.path.join(src, file_name)。如果没有这个,它会在 Python 运行代码的文件夹中搜索文件,而不是src -
顺便说一句:你可以使用
if file_name.endswith('.ibd'): -
...或
glob.glob/pathlib.Path.glob立即获得完整路径 -
Furas,那一行 os.path.join(src, file_name) 应该放在我的代码中的什么位置?