鱼C论坛

 找回密码
 立即注册
查看: 1944|回复: 0

[技术交流] 【python实际应用】为文件批量添加内容

[复制链接]
发表于 2020-3-23 21:50:20 | 显示全部楼层 |阅读模式

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

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

x
我在自建的博客中添加了一个当读取到md文件元数据中包含menu项时便会展示的样式,因此对于每个集 下的文件可以批量的添加元数据!
其中利用了tkinter中的 filedialog来进行批量的文件选择,由于python中file的'+'方式在首行添加文件总会遇到诸如乱码之类的问题,因此就放弃了,改为先通过'r'读取内容然后用'w'写入。在写入menu的同时顺道写入了title
其实就是一个简单的文件读写操作啦~
  1. # -*- coding: utf-8 -*-
  2. """
  3. 为我的博客 .md文件添加元数据

  4. @author: dlnb526
  5. """

  6. from tkinter import *
  7. from tkinter import filedialog
  8. import os.path

  9. class Doc_Title():
  10.     def __init__(self):
  11.         self.root = Tk()
  12.         button_1 = Button(self.root, text="打开文件", command=self.callback).pack()



  13.         mainloop()
  14.     def callback(self):
  15.         self.fileNames = filedialog.askopenfilenames()
  16.         print(self.fileNames)
  17.         self.co_add = input("输入目录节点:")
  18.         for i in self.fileNames:

  19.             self.file_operate(i)


  20.     def file_operate(self,fileName):

  21.         with open(fileName,'r',encoding='UTF-8') as f:
  22.             a = os.path.split(fileName)
  23.             print("您已打开文件:"+a[1])
  24.             dict1 = {};
  25.             b =a[1].split('.')
  26.             print(b[0])
  27.             dict1['title']=b[0]
  28.             dict1['menu']=self.co_add
  29.             print(dict1)
  30.             file_content = f.readlines()
  31.         with open(fileName,'w',encoding='UTF-8') as f:
  32.             f.writelines('---\n')
  33.             for key,value in dict1.items():

  34.                 f.writelines(key+': '+value+'\n')
  35.             f.writelines('---\n')
  36.             f.writelines(file_content)
  37. d = Doc_Title()
复制代码


如果有看到的大佬还想请教一下,python中+具体怎么用才能在中文第一行插入东西而后面的内容不乱码~
我原本实现思路如下
  1.     def file_operate(self,fileName):
  2.         with open (fileName,'r+',encoding='UTF-8') as f:
  3.             a = os.path.split(fileName)
  4.             print("您已打开文件:"+a[1])
  5.             dict1 = {};
  6.             b=a[1].split('.')
  7.             print(b[0])
  8.             dict1['title']=b[0]
  9.             dict1['menu']=self.co_add
  10.             print(dict1)
  11.             f.seek(0,0)
  12.             f.writelines('---\n')
  13.             for key,value in dict1.items():

  14.                 f.writelines(key+': '+value+'\n')
  15.             f.writelines('---\n')
  16.             print(a[1]+'修改成功')
复制代码

这里直接用了+模式,但是无论怎么样都会乱码(文字内容是中文)。


                               
登录/注册后可看大图


至于添加后的效果
https://sheng-yan-liu-ran.gitee. ... %E9%99%A9%E5%AE%B6/
其实就是最后有了那个返回目录的小按钮~嘿嘿献丑啦~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 09:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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