鱼C论坛

 找回密码
 立即注册
查看: 1377|回复: 8

[已解决]改名格式:据文件夹内文件名前4列数字查询 txt文件名

[复制链接]
发表于 2022-2-11 07:27:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
比如E 盘文件夹 sixmp3 有文件夹内有文件:
3348.mp3
3349.mp3
3350.mp3
3351.mp3
3352.mp3
3353.mp3

改名:据文件夹内文件名前4列数字查询 txt文件名:11.txt文本文件内容为:

3348观刈麦 唐 白居易
3349钱塘湖春行 唐 白居易
3350雁门太守行 唐 李贺
3351赤壁 唐 杜牧
3352泊秦淮 唐 杜牧
3353夜雨寄北 唐 李商隐

比如对于文件名:3348.mp3,   11.txt内第一行 信息是:3348观刈麦 唐 白居易
那么文件名就改为: 3348观刈麦 唐 白居易

现在 遇到问题:
因为 txt是 用识图软件获取的文件名,数字格式不是完全统一,导致手动改名都会出现如下错误:

文件名不能包含下列任何字符:

\/:*?",<>|

但是,txt各行的文件名,虽然识图软件识别的,但是直观看,并没有这些字符,如何处理比较合适?谢谢!
最佳答案
2022-2-11 08:23:16
  1. text = text.replace("", '').replace("/", '').replace(
  2.             ":", '').replace("*", '').replace("?", '').replace(
  3.             '"', '').replace(",", '').replace("<", '').replace(
  4.             ">", '')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-2-11 08:10:42 | 显示全部楼层
可以复制11.txt 到excel, 然后再copy 出来 12.txt, 此时可以直接复制修改文件名。

但是,是否可以在程序里,直接格式化 11.txt 各行内容呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-11 08:19:08 | 显示全部楼层
文件名不能包含下列任何字符:

\/:*?",<>|

如果只是单单这些字符,我认为可以用先读到一个变量中,再用字符串的replace方法将其替换
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-11 08:23:16 | 显示全部楼层    本楼为最佳答案   
  1. text = text.replace("", '').replace("/", '').replace(
  2.             ":", '').replace("*", '').replace("?", '').replace(
  3.             '"', '').replace(",", '').replace("<", '').replace(
  4.             ">", '')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-11 10:49:02 | 显示全部楼层
读取txt文件每一行数据生成列表:
txtline=[]
with open('11.txt','r') as f:
    lines = f.readlines()
    for line in lines:
        #print(line.strip())
        txtline.append(line.strip())
print(txtline)

1      255     547
12    54       45
78    89       56
44    11       23

【Python-数据读取】读取txt文件每一行数据生成列表
读出的数据dataMat 是一个由每行前两列组成的二维数组,labelMat 是由每行的最后一列组成的列表

  1. file = open('11.txt')
  2. dataMat=[]
  3. labelMat=[]
  4. for line in file.read.readlines():
  5.     curLine=line.strip().split("\t")
  6.     floatLine=map(float,curLine)#转换float
  7.     dataMat.append(floatLine[0:2])
  8.     labelMat.append(floatLine[-1])

  9. print 'dataMat:',dataMat
  10. print 'labelMat:',labelMat
  11. print np.shape(dataMat)
  12. print np.array(dataMat)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-11 11:10:55 | 显示全部楼层
python逐行读取txt文件时出现多余空行的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-11 11:51:47 | 显示全部楼层
wideband 发表于 2022-2-11 11:10
python逐行读取txt文件时出现多余空行的问题

是在末尾吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-11 12:13:00 | 显示全部楼层
谢谢大马强,末尾空行没有了,fs5, fs6 打印结果如下:

['3386.mp3', '3387.mp3',.....]

['3386方明-氓 诗经 国风卫风.mp3', '8387方明-离骚(节选) 战国 屈原.mp3',.....]

  1. import os
  2. txtline=[]
  3. with open('11.txt','r') as f:
  4.     lines = f.readlines()
  5.     for line in lines:
  6.         #print(line.strip())
  7.         txtline.append(line.strip())

  8. fn55 = []
  9. fn66 = []

  10. dirname5 = os.path.join('E:', '\sixmp3')
  11. fs5 = [i for i in os.listdir(dirname5)if i.endswith('.mp3')]

  12. fs6 = txtline
  13. print(fs5)
  14. print(fs6)
复制代码


怎么把文件夹内文件名字3386.mp3 更名为:3386方明-氓 诗经 国风卫风.mp3?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-11 16:09:22 | 显示全部楼层
用名字创建  文件就可以了。

  1. import os
  2. txtline=[]
  3. with open('11.txt','r') as f:
  4.     lines = f.readlines()
  5.     for line in lines:
  6.         txtline.append(line.strip())

  7. print(txtline)
  8. for name in txtline:
  9.     file1 = open(name,'w')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-30 10:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表