遍历文件夹,删除末尾带_1的文件
时间: 2024-02-23 12:03:19 浏览: 42
好的,你可以使用 Python 中的 `os` 模块和字符串的 `endswith` 方法来实现这个需求。具体代码如下:
```python
import os
folder_path = '/path/to/folder'
for file_name in os.listdir(folder_path):
if file_name.endswith('_1'):
file_path = os.path.join(folder_path, file_name)
os.remove(file_path)
```
这段代码会遍历指定文件夹中的所有文件,如果文件名以 `_1` 结尾,则认为是需要删除的文件,然后使用 `os.remove` 方法删除该文件。注意,该方法会直接删除文件,慎用。如果需要做一些安全措施,可以在删除前先判断文件是否存在等。
相关问题
用python把下面所有步骤写成代码,用re,argparse,pandas。可以实现通过命令把txt文件的指定内容另存为CSV,生成的CSV文件自动命名并保存到当前文件夹。 弹出指定标题的曲线图 1.读取txt文件 2.遍历文档,先找到关键字ABCDE所在行数,然后保存从这一行到末尾的所有内容,删除重复内容的行,没有Header,另存为到到CSV。 3.将CSV中的文本内容,以空格为分隔符,进行分列 4.插入已经设置好的标题 5.根据标题和数据,生成曲线图。
以下是代码实现:
```python
import re
import argparse
import pandas as pd
import matplotlib.pyplot as plt
# 定义命令行参数
parser = argparse.ArgumentParser(description='Process txt file and generate CSV and plot.')
parser.add_argument('filename', type=str, help='the name of the txt file')
parser.add_argument('title', type=str, help='the title of the plot')
args = parser.parse_args()
# 读取txt文件
with open(args.filename, 'r') as f:
data = f.readlines()
# 找到关键字所在行数
start_index = None
for index, line in enumerate(data):
if re.search(r'ABCDE', line):
start_index = index
break
# 保存从关键字所在行到末尾的内容,删除重复行
csv_data = []
if start_index is not None:
for line in data[start_index:]:
if line not in csv_data:
csv_data.append(line)
# 另存为CSV文件,自动命名并保存到当前文件夹
df = pd.DataFrame(csv_data)
filename = args.filename.split('.')[0] + '.csv'
df.to_csv(filename, index=False, header=False)
# 读取CSV文件,进行分列并插入标题
df = pd.read_csv(filename, sep=' ', header=None)
column_names = ['Column1', 'Column2', 'Column3', 'Column4']
df.columns = column_names
# 生成曲线图
plt.plot(df['Column1'], df['Column2'])
plt.title(args.title)
plt.xlabel('Column1')
plt.ylabel('Column2')
plt.show()
else:
print('No keyword "ABCDE" found in the file.')
```
使用方法:
1. 将上述代码保存为一个.py文件,例如"txt_to_csv_and_plot.py"。
2. 打开命令行窗口,进入.py文件所在目录。
3. 输入命令:`python txt_to_csv_and_plot.py filename.txt "Plot Title"`,其中"filename.txt"为需要处理的txt文件名,"Plot Title"为生成的曲线图的标题。
4. 执行命令后,会自动将指定内容另存为CSV,并生成曲线图。
用python把下面所有步骤写成代码,用re,argparse,pandas。可以实现通过命令把txt文件的指定内容另存为CSV,生成的CSV文件自动命名并保存到当前文件夹。 弹出几条指定标题的曲线图 1.读取txt文件 2.遍历文档,先找到关键字开头的行所在行数,然后保存从这一行到末尾的所有内容,删除重复内容的行,没有Header,另存为到到CSV。 3.将CSV中的文本内容,以空格为分隔符,进行分列 4.插入已经设置好的标题 5.根据标题和数据,生成曲线图。
以下是实现以上功能的代码:
```python
import re
import argparse
import pandas as pd
import matplotlib.pyplot as plt
# 定义命令行参数
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('input_file', type=str, help='input txt file')
parser.add_argument('output_file', type=str, help='output csv file')
parser.add_argument('keywords', type=str, nargs='+', help='keywords to search')
parser.add_argument('--plot_titles', type=str, nargs='+', help='plot titles')
args = parser.parse_args()
# 读取txt文件
with open(args.input_file, 'r') as f:
lines = f.readlines()
# 遍历文档,找到关键字开头的行所在行数
start_line = None
for i, line in enumerate(lines):
if any([re.search(keyword, line) for keyword in args.keywords]):
start_line = i
break
if start_line is None:
print('No matching lines found!')
else:
# 保存从这一行到末尾的所有内容
data = []
for line in lines[start_line:]:
if line not in data:
data.append(line)
# 删除重复内容的行,没有Header,另存为到CSV
df = pd.DataFrame(data, columns=['text'])
df.drop_duplicates(inplace=True)
df.to_csv(args.output_file, index=False)
# 将CSV中的文本内容,以空格为分隔符,进行分列
df = pd.read_csv(args.output_file, delimiter=' ', header=None)
# 插入已经设置好的标题
titles = ['time', 'value']
df.columns = titles
# 根据标题和数据,生成曲线图
if args.plot_titles:
for plot_title in args.plot_titles:
plt.plot(df['time'], df['value'])
plt.title(plot_title)
plt.show()
else:
plt.plot(df['time'], df['value'])
plt.show()
```
以上代码使用了 argparse 模块来处理命令行参数,使用了 re 和 pandas 模块来处理文本和 CSV 文件,使用了 matplotlib 模块来生成曲线图。在命令行中运行该脚本时,需要提供输入和输出文件名以及关键字参数。其中,关键字参数可以有多个,用空格隔开;如果需要生成多张曲线图,则可以使用 --plot_titles 参数来指定每张图的标题,多个标题也用空格隔开。生成的 CSV 文件会自动命名并保存到当前文件夹。