python文件检索排序问题

javame
yimin 2020-09-01 字数 159

文件夹有许多这样的文件,A1.mp3,A2.mp3,......,B1.mp3,B2.MP3,B3.mp3,.......

文件的名称是排好序的,但是最大的序号并不知道。如何写个程序实现把文件名加入

到列表里面?

Python Python的自由天空
7 个回复
wincss
wincss 2020-09-01

1. os.listdir

2. 循环,挨个 os.path.exists

【 在 javame (javame) 的大作中提到: 】

: 文件夹有许多这样的文件,A1.mp3,A2.mp3,......,B1.mp3,B2.MP3,B3.mp3,.......

: 文件的名称是排好序的,但是最大的序号并不知道。如何写个程序实现把文件名加入

: 到列表里面?

: ...................

one4all4one
one4all4one 2020-09-01

Listdir ()出来的都存在吧?还有挨个判断吗?

直接搞出来文件名了就,用后缀判断一下mp3就行,有些播放器会把歌词文件LRC也存在歌曲目录

【 在 wincss 的大作中提到: 】

: 1. os.listdir

: 2. 循环,挨个 os.path.exists

wincss
wincss 2020-09-01

两个方案都得挨个判断。。。

【 在 one4all4one (one4all4one) 的大作中提到: 】

: Listdir ()出来的都存在吧?还有挨个判断吗?

: 直接搞出来文件名了就,用后缀判断一下mp3就行,有些播放器会把歌词文件LRC也存在歌曲目录

javame
yimin 2020-09-01

# -*- coding: UTF-8 -*-

import os

index = ['A1','A2','A3','A4','A5','A6','B1','B2','B3','B4','B5']

flim = ['哥哥把你拴在心头','哥哥你带我走','给你一片温柔','人人有本难念的经',\

'妹妹我不能够','西部之恋','我热恋的故乡','黄土地 主题插曲','黄河边的故事',\

'信天游','一片热土']

for i in range(len(index)):

#    print (i+1, index[i], flim[i])

numstr = '%02d' % (i+1)

#    print (numstr)

os.rename(index[i] + '.mp3', numstr + '.' + flim[i] + '.mp3')

#    print(index[i] + '.mp3')

#    print(numstr + '.' + flim[i] + '.mp3')

这是我写的改名字代码,半自动模式。

目录下有许多A1.mp3,A2.mp3......,

最大序号并不知道,根据后面的列表自动改名字。

【 在 one4all4one 的大作中提到: 】

: Listdir ()出来的都存在吧?还有挨个判断吗?

: 直接搞出来文件名了就,用后缀判断一下mp3就行,有些播放器会把歌词文件LRC也存在歌曲目录

: :

one4all4one
one4all4one 2020-09-02

这个方案看似可行,其实问题很大,因为你要确保正确。两个列表必须关联起来。

可是如果用户删除了某个文件,再运行你的代码,就乱套了。你这代码只能运行一次,没有移植性。

可行的方案是listdir加后缀得到全部mp3,用mp3tag解析第三方库拿到名字,再重命名。

如此,代码在哪里,什么时候都能运行,很健壮。

唯一的要求就是,mp3文件必须得有mp3tag信息.

可用的库有mp3-tagger或者eyeD3

【 在 javame 的大作中提到: 】

: # -*- coding: UTF-8 -*-

: import os

: index = ['A1','A2','A3','A4','A5','A6','B1','B2','B3','B4','B5']

: ...................

SHaNE555
凯戈之555 2020-09-03

今天也是同样的需求,解决

import glob

import os

Path=文件夹目录

files=glob.glob(os.path.join(Path,'*.mp3'))

【 在 wincss (wincss) 的大作中提到: 】

: 1. os.listdir

: 2. 循环,挨个 os.path.exists

mv008
mv008 2020-09-08

没看懂, 读到的文件存到list里面,然后map或者filter,或者for in 利用正则表达式,都可以解决啊,很简单的事情

【 在 javame 的大作中提到: 】

: 文件夹有许多这样的文件,A1.mp3,A2.mp3,......,B1.mp3,B2.MP3,B3.mp3,.......

: 文件的名称是排好序的,但是最大的序号并不知道。如何写个程序实现把文件名加入

: 到列表里面?

: ...................