读入Python源程序文件,将文件内的多行的注释(即 每一行“#”后面的内容)删除,再写进new.txt文件里
时间: 2023-12-03 08:42:34 浏览: 88
可以使用以下Python代码实现:
```python
with open('old.py', 'r') as f:
lines = f.readlines()
with open('new.txt', 'w') as f:
for line in lines:
new_line = line.split('#')[0] + '\n'
f.write(new_line)
```
这段代码首先打开名为`old.py`的源程序文件,逐行读取文件内容并存储在`lines`列表中。然后打开名为`new.txt`的新文件,对于每一行源程序文件中的内容,使用`split()`方法删除该行中“#”后面的注释部分,再加上换行符`\n`,最后将处理后的新行写入新文件中。
相关问题
读入 python 源程序文件(带有注释的),删除程序中的注释部分后显示。
在Python中,你可以使用`ast`模块(Abstract Syntax Trees,抽象语法树)以及`tokenize`模块来解析源代码并删除注释。以下是一个简单的示例,展示了如何做到这一点:
```python
import ast
import tokenize
from io import StringIO
def remove_comments(code):
lines = code.split('\n')
tokens = list(tokenize.generate_tokens(StringIO(''.join(lines)).readline))
# 定义注释标记
comment_types = (tokenize.COMMENT, tokenize.NL)
new_lines = []
for ttype, token, start, end, line in tokens:
if ttype not in comment_types:
new_lines.append(line)
return ''.join(new_lines)
# 读取文件
with open('your_script.py', 'r') as file:
original_code = file.read()
# 删除注释
cleaned_code = remove_comments(original_code)
# 打印或保存清理后的代码
print(cleaned_code)
```
这个函数首先将源代码分割成行,然后逐行解析。如果遇到注释(`COMENT`类型),则跳过该行;否则,将其添加到新代码中。
注意替换 `'your_script.py'` 为你要处理的Python源程序文件的路径。
读入Python源程序文件practice.py,删除程序中的注释后显示
在Python中,你可以使用内置模块`ast`(Abstract Syntax Trees,抽象语法树)来解析源代码,并利用`tokenize`模块处理文本,去除注释。这里是一个简单的示例:
```python
import ast
import tokenize
from io import StringIO
# 假设你有一个名为practice.py的文件内容
with open('practice.py', 'r') as file:
source_code = file.read()
# 使用tokenize模块去除注释
def remove_comments(code):
lines = code.splitlines()
tokens = list(tokenize.generate_tokens(StringIO(code).readline))
clean_lines = []
in_comment = False
for ttype, token, _, _, line_no in tokens:
if ttype == tokenize.COMMENT:
continue
elif ttype == tokenize.STRING and in_comment:
pass # ignore string literals inside comments
else:
in_comment = not in_comment
clean_lines.append(line_no + 1) # Python uses 1-based indexing
# Reconstruct the code without comments
return '\n'.join(str(line) for line in clean_lines)
no_comments_source = remove_comments(source_code)
print(no_comments_source)
```
这个代码会读取`practice.py`并打印出移除注释后的行号。注意这只是一个基础版本,对于复杂的文档字符串或者字符串形式的注释可能会有误判。
阅读全文