Python:不会写'w'

时间:2018-08-15 23:22:44

标签: python-2.7 overwrite

Python 2.7不会覆盖现有文件。只会创建新的。

每个已经存在的名为pu​​sh.lua的文件都不会写入更改。

# Push Replacer .py

import os

file_open = open('push_new.lua', 'r')
file_contents = file_open.read()

for root, dirs, files in os.walk("."):
    path = root.split(os.sep)
    for file in files:
        if (file == 'push.lua'):
            with open(file, 'w') as f:
                f.write(file_contents)
                f.close()

file_open.close()

请不要投票,因为您不喜欢这个问题。

我做了研究,没有发布我尝试过的其他东西,因为这违反了发布多个代码块的规则。

我将其范围缩小到核心问题,并删除了所有不适合该问题的尝试。核心问题:现有文件没有被覆盖。

最终结果:这个问题是不正确的,我没有意识到。这就是为什么我问。

当确实是由于未更改目录引起的时,似乎还存在其他问题。

绝招-我不知道。为什么我问。

不要投反对票,因为您不了解其他人如何看待问题。请阅读论坛规则。

1 个答案:

答案 0 :(得分:2)

您的代码总是打开并覆盖当前工作目录中的mounted(),而不覆盖它可能在其中包含该名称的任何子目录中的任何子目录。您需要执行push.lua而不是open(os.path.join(root, file), 'w')

我怀疑您尝试使用open(file, 'w')变量来朝这个方向发展,但实际上您从未真正将path变量用于任何事情。