python - “文件 txt 的子目录已经存在。” 尝试对文件进行排序时出错,即使没有文件名“txt”
问题描述
我正在尝试制作一个 python 脚本,将具有特定扩展名的所有文件移动到相应的文件夹中,这些文件夹以扩展名命名,如 TXT。但是,在运行代码时会出现错误“文件 txt 的子目录已存在”。但是在查看了包含需要排序的文件的文件夹之后,甚至还没有创建过这样的名称的文件。
import os
import shutil
try:
path = "/Users/name/Desktop/test2/"
for (path, dirs, files) in os.walk(path):
for file in files:
extension=file.split('.')[1]
print(extension)
if os.path.exists(r"/Users/name/Desktop/test2/" +extension):
if file.endswith(extension):
shutil.move(file, "/Users/name/Desktop/test2/" +extension)
else:
os.system('mkdir ' + extension)
shutil.move(file, "/Users/name/Desktop/test2/" +extension)
except:
print("done")
解决方案
Try the following:
import os
import shutil
try:
root = '/Users/name/Desktop/test2/'
for path, _, files in os.walk(root):
for file in files:
extension = file.split('.')[1]
path_ext = os.path.join(root, extension)
os.makedirs(path_ext, exist_ok=True)
path_file = os.path.join(path, file)
shutil.move(path_file, path_ext)
except:
print('done')
os.path.join()
is a safer way to construct paths. As mentioned in my comment I would use the os.makedirs()
to create paths.
推荐阅读
- c# - 如何使用 csvhelper 将数据插入位列?
- reactjs - 动态加载时reactjs中的手风琴问题
- c - OpenSSL EVP API datatypes, comparing known ciphertext with generated ciphertext
- ios - 设置标签文本结构数组字符串
- discord.net - 为什么这个字符串返回 NullExeption
- django - 通过 http 标头获取数据的最佳实践是什么?
- performance - 返回有限结果集时计算完整结果集
- java - 从覆盖的枚举中删除重复的代码
- flutter - 隔离消息中的非法参数:(对象是 FunctionType)
- python - 熊猫如何在一列数据框中过滤具有特定数字范围的数据框