本题要求实现uniq命令,对于相邻的重复行(包括连续n (n≥3)行重复的情况),只保留一行。题目保证文件每一行的大小不超过64字节。需要实现的功能 打开文件,argv[1]为输入文件的路径 当文件路径非法时,打印can't open file,结尾带换行符 读取文件,对所有相邻行,若其重复,则仅保留一行。注意保留行尾的换行符 创建文件,argv[1]为输出文件的路径(同一文件),写入去重后的行 输入样例 Shizuoka 0 Shizuoka 0 Kanagawa 1 Kanagawa 1 Toukyou 2 Toukyou 2 Saitama 3 Saitama 3 Chiba 4 Chiba 4 输出样例 Shizuoka 0 Kanagawa 1 Toukyou 2 Saitama 3 Chiba 4
时间: 2023-06-13 22:03:02 浏览: 115
uniq命令 去除文件中的重复行
以下是Python实现uniq命令的代码,你可以参考:
```python
import sys
if len(sys.argv) != 2:
print("Usage: python3 uniq.py <filename>")
sys.exit(1)
filename = sys.argv[1]
try:
with open(filename, 'r') as f:
lines = f.readlines()
except:
print("can't open file")
sys.exit(1)
new_lines = []
prev_line = None
for line in lines:
if line != prev_line:
new_lines.append(line)
prev_line = line
with open(filename, 'w') as f:
f.writelines(new_lines)
```
代码说明:
首先,我们需要检查命令行参数是否正确,即输入文件路径是否提供。
然后,我们尝试打开文件,如果文件无法打开,则输出错误信息并退出程序。
接下来,我们遍历文件的每一行,如果当前行和前一行不同,则将当前行添加到新列表中,并将前一行更新为当前行。
最后,我们将新列表中的行写回文件中,覆盖原来的内容。
阅读全文