Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
File Python更改文件中的字符串,并将带有新字符串的所有内容输出到新文件中_File - Fatal编程技术网

File Python更改文件中的字符串,并将带有新字符串的所有内容输出到新文件中

File Python更改文件中的字符串,并将带有新字符串的所有内容输出到新文件中,file,File,我试图在一个目录和几个子目录下的所有文件中扫描一个字符串,替换它,当我执行替换时,将它保存到一个新文件中, 我设法做到了 1) 在文件夹和子文件夹中的所有文件中搜索字符串, 2) 计算字符串的显示量 3) 为拥有字符串的用户创建新文件 但由于某些原因,我得到的新文件是空的,而不是包含替换字符串的旧文件行 这是我的密码: import os parentDirectory = "E:\ProjectPython\Test" oldString = "oldString" newString =

我试图在一个目录和几个子目录下的所有文件中扫描一个字符串,替换它,当我执行替换时,将它保存到一个新文件中, 我设法做到了 1) 在文件夹和子文件夹中的所有文件中搜索字符串, 2) 计算字符串的显示量 3) 为拥有字符串的用户创建新文件

但由于某些原因,我得到的新文件是空的,而不是包含替换字符串的旧文件行

这是我的密码:

import os

parentDirectory = "E:\ProjectPython\Test"
oldString = "oldString"
newString = "newString"

if (os.path.isdir(parentDirectory)):
    for dirName,directories,files in os.walk(parentDirectory):
        for fileName in files:
            fullPath = os.path.join(dirName,fileName)
            with open(fullPath) as file:
                counter=0
                for line in file:
                    if line.__contains__(oldString) or line.__contains__(oldString.lower()):
                        counter=counter+1
                if counter>>0 :
                        with open(fullPath+".New","w") as newFile:
                            for line in file:
                                newFile.write(line.replace(oldString,newString))
                        print("File:"+fullPath+"\nStrings that were replaced:"+str(counter))

else:
    print(parentDirectory+"is missing!")

您已经在第一个
for line in file
循环中读取了整个文件;当你第二次这样做的时候,已经没有一行可以读了。将
file.seek(0)
放在第二个循环之前倒带。另外,请注意,
line.\uuuuu包含\uuuuu(oldString)
是错误的-双下划线方法是特殊功能的实现方式,而不是使用方式。应该在第行中写入
oldString
。谢谢,File.seek(0)帮助了我,现在我在新文件中得到了输出。您已经在第一个
for line in File
循环中读取了整个文件;当你第二次这样做的时候,已经没有一行可以读了。将
file.seek(0)
放在第二个循环之前倒带。另外,请注意,
line.\uuuuu包含\uuuuu(oldString)
是错误的-双下划线方法是特殊功能的实现方式,而不是使用方式。应该在第行中写入
oldString。谢谢,文件.seek(0)有帮助,现在我在新文件中得到了输出