从python文件中删除所有打印语句的脚本或正则表达式

从python文件中删除所有打印语句的脚本或正则表达式,python,python-3.x,Python,Python 3.x,我想从文件中删除所有打印语句。手动擦除所有语句的任务非常繁重。我希望打印语句被删除,而不是被评论。我想在python中执行此操作,只需给出文件名(文件路径)好的,您可以尝试打开文件,然后写入不包含print语句的行,例如: with open("your_desired_file.extension", "r") as f: lines = f.readlines() with open("your_desired_file.extension", "w") as f: for

我想从文件中删除所有打印语句。手动擦除所有语句的任务非常繁重。我希望打印语句被删除,而不是被评论。我想在python中执行此操作,只需给出文件名(文件路径)

好的,您可以尝试打开文件,然后写入不包含print语句的行,例如:

with open("your_desired_file.extension", "r") as f:
    lines = f.readlines()
with open("your_desired_file.extension", "w") as f:
    for line in lines:
        if "print" not in line:
            f.write(line)

注意:正如其他人所说,记住这将“删除”包含字符串“print”的所有行,不仅是语句或函数,甚至是注释。所以要意识到这一点

您可以尝试这个正则表达式-在代码中使用它,看看它是否有效:

import re
str = 'print("dddd \" dddd")'
print(re.match(r"^\s*print\('.*'\)\s*$", str) or re.match(r'^\s*print\(".*"\)\s*$', str))
Pythia
建议的文件读取循环中,将上面的
str
替换为
line

希望这有帮助(同时处理
print(“”)
print(“”)

*print\(.
将捕获包含字符串
print的整行内容(
这应该足够安全,可以删除,或者您可以在脚本顶部添加
print=lambda*args,**kwargs:None
,本地打印不会起任何作用。我们正在讨论
print
语句或
print(…)
函数吗?删除该语句可能更容易,因为它必须是行中的第一条语句(或在
之后)然而,
print
函数可以出现在任何地方,甚至可以被其他别名使用。@Nullman根据是否使用了
re.MULTILINE
,您的reg-ex将无法捕获多行打印语句或打印后的所有行。顺便问一句,为什么要这样做?这是某种Python 2-3转换吗?还是要“静音”
print
?在后一种情况下,将
print
(函数)重新定义为不执行任何操作可能更容易(且容易逆转)。这将删除包含“print”一词的任何行,包括但不限于
#关于打印的注释,
“一些表示“print”的字符串”
,而
不是打印函数()
。这将检测单词
print
的所有用法,并删除它们出现的行。需要一些更微妙的东西。嗯,你是对的,但我只是想给出一个想法;它确实很“野蛮”。