获取从终端输入的文件名及关键字,打开文件,利用文件迭代器按行读取文件,然后打印输出包含关键字的行,最后关闭文件
时间: 2024-03-10 15:50:27 浏览: 29
下面是一个简单的Python程序,可以获取从终端输入的文件名及关键字,打开文件,利用文件迭代器按行读取文件,然后打印输出包含关键字的行,最后关闭文件:
```python
import sys
# 获取文件名和关键字
if len(sys.argv) < 3:
print("Usage: python search.py <filename> <keyword>")
sys.exit(1)
filename = sys.argv[1]
keyword = sys.argv[2]
# 打开文件
try:
with open(filename, 'r') as f:
# 逐行读取文件
for line in f:
# 判断是否包含关键字
if keyword in line:
print(line.strip()) # 输出包含关键字的行
except FileNotFoundError:
print("File not found:", filename)
sys.exit(1)
# 关闭文件
f.close()
```
在终端上执行以下命令,可以运行以上程序:
```
python search.py filename.txt keyword
```
其中,`filename.txt`是要搜索的文件名,`keyword`是要搜索的关键字。程序会打印包含关键字的行。
相关问题
本关任务:获取从终端输入的文件名,打开文件,使用readline()函数读取文件的前两行,并打印输出,最后关闭文件
好的,这是一个简单的文件操作任务,我来帮你完成。
你可以使用 Python 内置的 `input` 函数获取从终端输入的文件名,代码如下:
```python
filename = input("请输入文件名:")
```
接下来,你需要使用 Python 内置的 `open` 函数打开文件,代码如下:
```python
f = open(filename, "r")
```
这里的 `"r"` 表示以只读模式打开文件,如果你需要写入文件,可以使用 `"w"` 或 `"a"`。
然后,你可以使用 `readline()` 函数读取文件的前两行,并打印输出,代码如下:
```python
print(f.readline())
print(f.readline())
```
最后,别忘了关闭文件,释放资源,代码如下:
```python
f.close()
```
这样,我们的任务就完成了,下面是完整的代码实现:
```python
filename = input("请输入文件名:")
f = open(filename, "r")
print(f.readline())
print(f.readline())
f.close()
```
文件名有关键字,读取这些文件
如果你想读取文件名中包含指定关键字的所有文件,你可以使用 Python 的 `os` 模块中的 `listdir` 函数来列出目录中的所有文件名,然后再筛选出包含指定关键字的文件名,最后按照需要读取这些文件。
下面是一个示例代码,它会读取指定目录下所有文件名中包含指定关键字的文件,并将这些文件的内容存储在一个列表中:
```python
import os
def read_files_with_keyword(directory, keyword):
matched_files = []
for filename in os.listdir(directory):
if keyword in filename:
filepath = os.path.join(directory, filename)
with open(filepath, "r") as file:
file_content = file.read()
matched_files.append(file_content)
return matched_files
```
你可以调用这个函数来读取指定目录下所有文件名中包含指定关键字的文件,例如:
```python
matched_files = read_files_with_keyword("/path/to/directory", "apple")
print(matched_files)
```
这将打印出所有文件名中包含关键字“apple”的文件的内容。请注意,`/path/to/directory` 应该替换为实际的目录路径。