python中如何修改文件?
Posted 小小程序员ol
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中如何修改文件?相关的知识,希望对你有一定的参考价值。
修改的概念:对于硬盘上数据的修改, 根本没有改的操作, 只有覆盖操作
修改的流程:文件的修改都是数据加载到内存中, 在内存中修改完再覆盖入硬盘
一.修改方式一
1.修改过程
- 先以 r 模式打开源文件,将源文件内容全部读入内存
- 然后在内存中完成修改
- 再以 w 模式打开源文件,将修改后的内容覆盖入源文件
2.优缺点
- 优点 : 不须要硬盘预留足够的空间
- 缺点 : 会在文件内容过大的情况下,占用过多的内存
3.使用场景
看情况而定, 一般用于文本编辑器, 让用户能看到全部的内容
with open(\'user.txt\',mode=\'r\',encoding=\'utf-8\') as f:
data=f.read()
data=data.replace(\'python\',\'人生苦短,我用python\')
with open(\'user.txt\',mode=\'w\',encoding=\'utf-8\') as f:
f.write(data)
二.修改方式二
1.修改过程
- 以 r 模式打开源文件,然后以 w 模式打开一个临时文件
- 从源文件中读一行到内存中,修改完毕后直接写入临时文件,循环往复,直到操作完毕所有行
- 删除源文件,将临时文件名改名为源文件名
2.使用到 OS 模块
- import os : 导入模块
- os.remove( ) : 删除
- os.rename( ) : 改名
3.优缺点
- 优点 :没有对内存造成过度的占用
- 缺点:需要硬盘预留出足够的空间来存放临时文件
4.适用场景
看具体而定, 一般用于程序员开发式
import os
with open(\'user.txt\',mode=\'rt\',encoding=\'utf-8\') as read_f,\\
open(\'user.txt.swap\',mode=\'wt\',encoding=\'utf-8\') as write_f:
for line in read_f:
if \'python\' in line:
line=line.replace(\'python\',\'人生苦短,我用python\')
write_f.write(line)
#Python小白学习交流群:725638078
os.remove(\'user.txt\') #删除源文件
os.rename(\'user.txt.swap\',\'user.txt\') #把临时文件名改成源文件名
三.文件拷贝示例
可以拷贝任意类型的文件
os.path.isfile()先判断文件是否存在
import os
while 1:
user_file = input("请输入文件路径>>").strip()
if not os.path.isfile(user_file):
print("文件不存在,请重新输入")
continue
else:
copy_path = input("请输入目标路径>>").strip()
with open(r"%s"%(user_file),"rb")as read_file,\\
open(r"%s"%(copy_path),"ab")as w_f:
for line in read_file:
w_f.write(line)
if len(user_file) == len(copy_path):
print("copy成功")
break
如何在python烧瓶中获取具有本地时区的模板文件的修改日期
【中文标题】如何在python烧瓶中获取具有本地时区的模板文件的修改日期【英文标题】:How to get modification date of a template file with local timezone in python flask 【发布时间】:2021-04-10 22:06:50 【问题描述】:我在使用本地时区获取文件修改日期时遇到问题。它始终以服务器默认时区显示日期时间。我必须将其更改为印度时间。(亚洲/加尔各答)。 我安装了 pytz,但我不知道如何使用它来更改服务器时区并相应地获取文件修改时间。请建议我。这是我的代码:
from datetime import datetime
import pytz
import os.path, time
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def home():
f=os.path.abspath("templates/index.html")
fts=time.gmtime(os.path.getmtime(f))
dt= time.strftime('%d %b %Y %l:%M %p',fts)
mdt=str(dt)
return render_template('index.html',mdate=mdt)
if __name__ == "__main__":
app.run(debug=True)
【问题讨论】:
【参考方案1】:这对你有用吗:
from datetime import datetime
from pytz import timezone
import os.path, time
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/<tz1>/<tz2>")
def home():
f=os.path.abspath("templates/index.html")
tz = timezone(tz1+'/'+tz2)
dt= datetime.now(tz)
mdt=str(dt)
return render_template('index.html',mdate=mdt)
if __name__ == "__main__":
app.run(debug=True)
现在您可以在这里访问它:
127.0.0.1:5000/亚洲/加尔各答
【讨论】:
我需要 index.html 文件的修改日期,该文件位于亚洲/加尔各答时区。 类似这样的:w3schools.com/jsref/prop_doc_lastmodified.asp ? 是..亚洲/加尔各答时区 index.html 模板文件的最后修改日期 啊啊,几分钟后搞定 好的..等待..兄弟以上是关于python中如何修改文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python 中获取文件的修改日期/时间? [复制]