【发布时间】:2019-05-09 11:15:25
【问题描述】:
我用 Python 构建的工具有一个小问题。
此工具可按文件名对文件进行分类,并按每个文件名中的单词创建文件夹,然后将所有文件移动到相应的文件夹中。
文件:
09052019_6_filetype1_currenttime_randomnumber.xml09052019_2_filetype2_currenttime_randomnumber.xml09052019_9_filetype3_currenttime_randomnumber.xml09052019_1_filetype3_currenttime_randomnumber.xml09052019_1_filetype3_currenttime_randomnumber.xml
实际结果:
- filetype1_Status_6(文件夹)
09052019_6_filetype1_currenttime_randomnumber.xml
- filetype2_Status_2(文件夹)
09052019_2_filetype2_currenttime_randomnumber.xml
- filetype3_Status_9(文件夹)
09052019_9_filetype3_currenttime_randomnumber.xml
- filetype3_Status_1(文件夹)
09052019_1_filetype3_currenttime_randomnumber.xml09052019_1_filetype3_currenttime_randomnumber.xml
代码版本 1.0
#!/usr/bin/python3
# v1.0
# Importing modules
import os
import shutil
import sys
# Path of input and output files
src = input('Input files: ')
dest = input('Destination files: ')
os.chdir(dest)
def classify():
for f in os.listdir(src):
splitname = f.split('_')
status = splitname[1]
topic = splitname[2]
foldername = topic + '_' + 'Status_' + status
if not os.path.exists(foldername):
os.mkdir(foldername)
shutil.move(os.path.join(src, f), foldername)
print('Sorting out files, please wait...')
classify()
print('¡DONE!')
改进
但在 v2.0 中,我想进一步“改进”它,只是保持相同的可用性,但将文件名从原始名称更改为“Message_*.xml”,它可以工作,但只移动一个文件,而不是全部其中。
目前的结果:
- filetype1_Status_6(文件夹)
- Message_.xml
- filetype2_Status_2(文件夹)
- Message.xml
- filetype3_Status_9(文件夹)
- Message_.xml
- filetype3_Status_1(文件夹)
- Message_.xml
预期结果:
- filetype1_Status_6(文件夹)
- Message_.xml
- filetype2_Status_2(文件夹)
- Message.xml
- filetype3_Status_9(文件夹)
- Message_.xml
- filetype3_Status_1(文件夹)
- Message_.xml
- Message_1.xml
代码版本 2.0
#!/usr/bin/python3
# v2.0
# Importing modules
import os
import shutil
import sys
# Path of input and output files
src = input('Input files: ')
dest = input('Destination files: ')
os.chdir(dest)
def classify():
for f in os.listdir(src):
splitname = f.split('_')
status = splitname[1]
topic = splitname[2]
foldername = topic + '_' + 'Status_' + status
newFileName = foldername + '\\' + 'Message_' + '.xml'
if not os.path.exists(foldername):
os.mkdir(foldername)
shutil.copy(os.path.join(src, f), newFileName)
print('Sorting out files, please wait...')
classify()
print('¡DONE!')
【问题讨论】:
标签: python python-3.x file shutil