Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法让python脚本用旧文件替换新文件_Python - Fatal编程技术网

有没有办法让python脚本用旧文件替换新文件

有没有办法让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

我是一名python新手,我有一个问题。 我有一个python脚本检查外部网页上是否有可用的更新,但我在试图让它用新文件覆盖旧文件时被卡住了。下面的代码所做的是获取new.py并将其作为txt文件打开。然后,它搜索
\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)

有两点需要注意:

  • 通过此方法,您将无法进行逐行控制
  • 您可能希望使用以下策略使此程序调用另一个程序(如V1调用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)