有没有办法让python脚本用旧文件替换新文件
我是一名python新手,我有一个问题。 我有一个python脚本检查外部网页上是否有可用的更新,但我在试图让它用新文件覆盖旧文件时被卡住了。下面的代码所做的是获取new.py并将其作为txt文件打开。然后,它搜索有没有办法让python脚本用旧文件替换新文件,python,Python,我是一名python新手,我有一个问题。 我有一个python脚本检查外部网页上是否有可用的更新,但我在试图让它用新文件覆盖旧文件时被卡住了。下面的代码所做的是获取new.py并将其作为txt文件打开。然后,它搜索\uuuuuuuuuuuuuuuuuuuuu版本。我搜索新版本的代码如下。如何用new.py替换current.py __VERSION__ = '1.0' #Get new version new_version = '' with open('new.py') as newfile
\uuuuuuuuuuuuuuuuuuuuu版本
。我搜索新版本的代码如下。如何用new.py替换current.py
__VERSION__ = '1.0'
#Get new version
new_version = ''
with open('new.py') as newfile:
for line in newfile:
line = line.strip()
if '__VERSION__' in line:
_, new_version = line.split('=', maxsplit=1)
new_version = new_version.strip()
break
谢谢@user:6530979
有人能帮我弄清楚这之后该怎么办吗?
编辑:current.py的目标是用new.py的代码覆盖其自身
任何帮助都将不胜感激总体而言,这些解决方案充其量都是黑客式的——无法保证 您应该研究包管理/版本控制,因为已经为此开发的系统可能更可靠 但是,您可能可以使用
os.rename
。我不确定这是否是一个好的解决方案,或者它有多安全,但在我的快速试验中它起了作用
''current.py(V1)''
导入操作系统
重命名(“current.py”、“old.py”)
重命名(“new.py”、“current.py”)
在这种情况下,current.py(V1)
是用户运行的文件。执行后,剩下的是old.py
和current.py(V2)
有两点需要注意:
这是你想要的吗?要替换特定行中的某些文本?您在
current.py
的一部分上面包含的代码示例是否为?换句话说,目标是让current.py
覆盖自身吗?是的,这就是目标。检查每一行中是否有版本,然后替换它,并将新行写入文件有什么错?基本上,首先读取整个文件并将其保存在带有readlines的列表中。然后通过迭代列表来检查文件中的每一行,并用所需内容替换_________________?然后,把列表写到文件中。你能提供一个代码示例吗?这样我就可以完全理解你的意思,因为我不确定你的意思是什么?@Pythondoit我希望这能有所帮助。
# what you want to replace '__VERSION__' with
replace = 'what ever you want'
new_lines = []
with open('new.py',"r") as newfile:
lines = newfile.readlines()
for line in lines:
new_lines.append(line.replace("__VERSION__", replace))
with open('new.py',"w") as newfile2:
full_file_text = "".join(new_lines)
newfile2.write(full_file_text)