我正在尝试创建一个python脚本,允许我将音乐放入一个大文件夹中,这样当我运行脚本时,它将根据音乐文件的第一部分创建文件夹。所以,我们假设我有一个名为OMFG - Ice Cream.mp3
的音乐文件我希望能够分割每个音乐文件名,以便在这种情况下OMFG - Ice Cream.mp3
而不是Ice Cream.mp3
将其删除{{1}然后它会使用OMFG
来创建一个名为that的文件夹。在创建该文件夹之后,我想找到一种方法然后将OMFG - Ice Cream.mp3
移动到刚刚创建的文件夹中。
到目前为止,这是我的代码:
import os
# path = "/Users/alowe/Desktop/testdir2"
# os.listdir(path)
songlist = ['OMFG - Ice Cream.mp3', 'OMFG - Hello.mp3', 'Dillistone - Sad & High.mp3']
teststr = str(songlist)
songs = teststr.partition('-')[0]
print ''.join(songs)[2:-1]
我的主要麻烦是如何遍历字符串中的每个对象。
谢谢, 亚历
答案 0 :(得分:2)
使用pathlib
module for such tasks:
#!/usr/bin/env python3
import sys
from pathlib import Path
src_dir = sys.argv[1] if len(sys.argv) > 1 else Path.home() / 'Music'
for path in Path(src_dir).glob('*.mp3'): # list all mp3 files in source directory
dst_dir, sep, name = path.name.partition('-')
if sep: # move the mp3 file if the hyphen is present in the name
dst_dir = path.parent / dst_dir.rstrip()
dst_dir.mkdir(exist_ok=True) # create the leaf directory if necessary
path.replace(dst_dir / name.lstrip()) # move file
示例:
$ python3.5 move-mp3.py /Users/alowe/Desktop/testdir2
它将OMFG - Ice Cream.mp3
移至OMFG/Ice Cream.mp3
。
如果您想将OMFG - Ice Cream.mp3
移至OMFG/OMFG - Ice Cream.mp3
:
#!/usr/bin/env python3.5
import sys
from pathlib import Path
src_dir = Path('/Users/alowe/Desktop/testdir2') # source directory
for path in src_dir.glob('*.mp3'): # list all mp3 files in source directory
if '-' in path.name: # move the mp3 file if the hyphen is present in the name
dst_dir = src_dir / path.name.split('-', 1)[0].rstrip() # destination
dst_dir.mkdir(exist_ok=True) # create the leaf directory if necessary
path.replace(dst_dir / path.name) # move file
答案 1 :(得分:1)
您可以试用以下代码:
循环浏览
import os
import shutil
songlist = ['OMFG - Ice Cream.mp3', 'OMFG - Hello.mp3', 'Dillistone - Sad & High']
m_dir = '/path/mainfolder'
song_loc = '/path/songlocation'
for song in songlist:
s = song.split('-')
if os.path.exists(os.path.join(m_dir,s[0])):
shutil.copy(os.path.join(song_loc,song),os.path.join(m_dir,s[0].strip()))
else:
os.makedirs(os.path.join(m_dir,s[0]))
shutil.copy(os.path.join(song_loc,song),os.path.join(m_dir,s[0].strip()))