编写一个Python 脚本,读取example.txt文件中的每一行,并将每一行的内容前面加上行号,然后将处理后的内容写入到一个新文件、numbered_example.txt’中。并且打印例如: 1: Hello,World!2: This is a test file.
时间: 2024-11-22 07:40:54 浏览: 40
你可以使用Python的内置模块`open()`来读取文件,`enumerate()`函数来生成行号,以及`with open()`来处理文件的读写。下面是一个简单的脚本示例:
```python
# 打开源文件和目标文件
with open('example.txt', 'r') as f_in, open('numbered_example.txt', 'w') as f_out:
# 遍历源文件中的每一行
for i, line in enumerate(f_in, start=1): # start参数从1开始计数
# 在每行前添加行号
processed_line = f"{i}: {line.strip()}"
# 写入处理后的行到目标文件
f_out.write(processed_line + '\n')
# 打印例子
print("1:", "Hello,World!")
print("2:", "This is a test file.")
```
这个脚本会先读取`example.txt`文件的每一行,然后在行前加上对应的行号并写入新的`numbered_example.txt`文件中。最后,我们手动演示了如何在脚本外部打印这两个例子。
相关问题
用Python写一个统计Verilog代码行数的脚本,首先打开指定的文件并读取全部内容。然后使用正则表达式去除注释,并按行分割并去除空白字符。接下来,它统计不在模块定义、但在包定义、函数定义、任务定义、generate块等特殊语句内的代码行数。然后,它查找每个模块实例化语句,并递归计算每个模块的行数,将其加入总行数中。最后,它查找每个 include 语句,并递归计算每个 included 文件的行数,将其加入总行数中。最终返回总行数。也同时输出各个子模块,include文件的对应的代码行数
好的,以下是一个实现该功能的Python脚本:
```python
import re
def count_verilog_lines(filename):
with open(filename, 'r') as f:
content = f.read()
# 去除注释
content = re.sub(r'//.*?\n|/\*.*?\*/', '', content, flags=re.DOTALL)
# 按行分割并去除空白字符
lines = [line.strip() for line in content.split('\n')]
# 统计行数
total_lines = 0
module_lines = {}
include_lines = {}
for i, line in enumerate(lines):
if line.startswith('module'):
# 记录模块的起始行号
module_name = re.search(r'module\s+(\w+)\s*\(', line).group(1)
module_lines[module_name] = i
elif line.startswith('endmodule'):
# 计算模块的行数
module_name = re.search(r'module\s+(\w+)\s*\(', lines[module_lines[line]]).group(1)
module_lines[module_name] = i - module_lines[module_name] + 1
elif line.startswith('include'):
# 记录 include 文件的起始行号
include_file = re.search(r'include\s+"(.+)"', line).group(1)
include_lines[include_file] = i
elif line.startswith('`include'):
# 记录 `include 文件的起始行号
include_file = re.search(r'`include\s+"(.+)"', line).group(1)
include_lines[include_file] = i
elif not any(line.startswith(keyword) for keyword in ['module', 'endmodule', 'package', 'endpackage', 'function', 'endfunction', 'task', 'endtask', 'generate']):
# 不在特殊语句内的代码行
total_lines += 1
# 递归计算子模块的行数
for module_name, module_start in module_lines.items():
module_content = '\n'.join(lines[module_start:module_start+module_lines[module_name]])
module_lines[module_name] = count_verilog_lines(module_content)
total_lines += module_lines[module_name]
# 递归计算 include 文件的行数
for include_file, include_start in include_lines.items():
include_content = count_verilog_lines(include_file)
include_lines[include_file] = include_content
total_lines += include_content
# 输出子模块和 include 文件的行数
print('子模块行数:')
for module_name, module_line_count in module_lines.items():
print(f'{module_name}: {module_line_count}')
print('Include 文件行数:')
for include_file, include_line_count in include_lines.items():
print(f'{include_file}: {include_line_count}')
return total_lines
```
使用方法:
```python
total_lines = count_verilog_lines('example.v')
print(f'Total lines: {total_lines}')
```
其中,`example.v` 是要统计的 Verilog 文件的路径。函数返回该文件的总代码行数,并输出每个子模块、include 文件的代码行数。
使用python编写一个可以注释指定行的脚本
当你想用Python编写一个脚本来注释特定行,你可以考虑使用内置的文件操作和字符串格式化功能。下面是一个简单的例子,它读取一个文本文件,查找给定行号并添加注释前缀(通常是井号 `#`):
```python
def comment_lines(input_file, line_numbers, comment_char='#'):
with open(input_file, 'r') as file:
lines = file.readlines()
# 确保行号是整数,并从1开始计数
line_numbers = [int(line) - 1 for line in line_numbers]
for line_num in line_numbers:
if 0 <= line_num < len(lines):
lines[line_num] = f'{comment_char} {lines[line_num]}'
with open(input_file, 'w') as file:
file.writelines(lines)
# 示例用法:
comment_lines('example.txt', [1, 5], '#')
阅读全文