os.path.endwith
时间: 2023-08-17 17:12:45 浏览: 100
引用[1]中的代码片段中,`os.path.endwith`是一个错误的写法,正确的写法应该是`path.endswith`。`endswith`是字符串的方法,用于判断字符串是否以指定的后缀结尾。在引用[2]中的代码中,`abs_path.endwith('.py')`应该是`abs_path.endswith('.py')`,用于判断文件是否以`.py`结尾。同样,在引用[3]中的代码中,`name.endswith('.py')`用于筛选出以`.py`结尾的文件名。所以,正确的写法应该是`path.endswith('.py')`。
相关问题
import os import shutil from datetime import date import time #指定目标文件夹路径和本地路径 src_folder = r"Z:\看板v3\PB\從" dst_folder = "D:\g" start_time = time.time() # 获取今天的日期 today = date.today() # 遍历目标文件夹中的所有文件 for file_name in os.listdir(src_folder): if file_name.endswith('.txt'): file_path = os.path.join(src_folder, file_name) if date.fromtimestamp(os.path.getmtime(file_path)) == today: shutil.copy(file_path, os.path.join(dst_folder, file_name)) # 遍历本地路径中的所有文件 file_contents = [] for file_name in os.listdir(dst_folder): if file_name.endswith('.txt'): # 获取文件名(不带后缀) filename = os.path.splitext(file_name)[0] with open(os.path.join(dst_folder, file_name), 'r', encoding='gbk') as t: # 将文件名和内容用逗号分隔,并写入列表 for line in t: file_contents.append(file_name + ',' + line.strip()) # 将所有文件的内容写入汇总文档中 with open(os.path.join(dst_folder, '汇总文档.txt'), 'w', encoding='gbk') as f: # 将列表中的数据使用换行符连接成字符串,并写入文件 f.write('\n'.join(file_contents)) # 获取程序结束时间,计算程序运行时间 end_time = time.time() run_time = end_time - start_time print(f"程序运行时间:{run_time:.2f} 秒")將這個代碼中複製過來的文件全部刪除
你可以使用 `os.remove()` 函数删除文件。在遍历目标文件夹中的文件时,如果文件符合条件,可以将其添加到一个列表中。在遍历完成后,可以使用 `os.remove()` 函数循环删除所有文件。
以下是修改后的代码:
```
import os
import shutil
from datetime import date
import time
# 指定目标文件夹路径和本地路径
src_folder = r"Z:\看板v3\PB\從"
dst_folder = "D:\g"
start_time = time.time()
# 获取今天的日期
today = date.today()
# 遍历目标文件夹中的所有文件
files_to_delete = []
for file_name in os.listdir(src_folder):
if file_name.endswith('.txt'):
file_path = os.path.join(src_folder, file_name)
if date.fromtimestamp(os.path.getmtime(file_path)) == today:
shutil.copy(file_path, os.path.join(dst_folder, file_name))
files_to_delete.append(file_path)
# 遍历本地路径中的所有文件
file_contents = []
for file_name in os.listdir(dst_folder):
if file_name.endswith('.txt'):
# 获取文件名(不带后缀)
filename = os.path.splitext(file_name)[0]
with open(os.path.join(dst_folder, file_name), 'r', encoding='gbk') as t:
# 将文件名和内容用逗号分隔,并写入列表
for line in t:
file_contents.append(file_name + ',' + line.strip())
# 将所有文件的内容写入汇总文档中
with open(os.path.join(dst_folder, '汇总文档.txt'), 'w', encoding='gbk') as f:
# 将列表中的数据使用换行符连接成字符串,并写入文件
f.write('\n'.join(file_contents))
# 删除所有复制到本地路径中的文件
for file_path in files_to_delete:
os.remove(file_path)
# 获取程序结束时间,计算程序运行时间
end_time = time.time()
run_time = end_time - start_time
print(f"程序运行时间:{run_time:.2f} 秒")
```
优化代码 def fault_classification_wrapper(vin, main_path, data_path, log_path, done_path): start_time = time.time() isc_path = os.path.join(done_path, vin, 'isc_cal_result', f'{vin}_report.xlsx') if not os.path.exists(isc_path): print('No isc detection input!') else: isc_input = isc_produce_alarm(isc_path, vin) ica_path = os.path.join(done_path, vin, 'ica_cal_result', f'ica_detection_alarm_{vin}.csv') if not os.path.exists(ica_path): print('No ica detection input!') else: ica_input = ica_produce_alarm(ica_path) soh_path = os.path.join(done_path, vin, 'SOH_cal_result', f'{vin}_sohAno.csv') if not os.path.exists(soh_path): print('No soh detection input!') else: soh_input = soh_produce_alarm(soh_path, vin) alarm_df = pd.concat([isc_input, ica_input, soh_input]) alarm_df.reset_index(drop=True, inplace=True) alarm_df['alarm_cell'] = alarm_df['alarm_cell'].apply(lambda _: str(_)) print(vin) module = AutoAnalysisMain(alarm_df, main_path, data_path, done_path) module.analysis_process() flags = os.O_WRONLY | os.O_CREAT modes = stat.S_IWUSR | stat.S_IRUSR with os.fdopen(os.open(os.path.join(log_path, 'log.txt'), flags, modes), 'w') as txt_file: for k, v in module.output.items(): txt_file.write(k + ':' + str(v)) txt_file.write('\n') for x, y in module.output_sub.items(): txt_file.write(x + ':' + str(y)) txt_file.write('\n\n') fc_result_path = os.path.join(done_path, vin, 'fc_result') if not os.path.exists(fc_result_path): os.makedirs(fc_result_path) pd.DataFrame(module.output).to_csv( os.path.join(fc_result_path, 'main_structure.csv')) df2 = pd.DataFrame() for subs in module.output_sub.keys(): sub_s = pd.Series(module.output_sub[subs]) df2 = df2.append(sub_s, ignore_index=True) df2.to_csv(os.path.join(fc_result_path, 'sub_structure.csv')) end_time = time.time() print("time cost of fault classification:", float(end_time - start_time) * 1000.0, "ms") return
Here are some suggestions to optimize the code:
1. Use list comprehension to simplify the code:
```
alarm_df = pd.concat([isc_input, ica_input, soh_input]).reset_index(drop=True)
alarm_df['alarm_cell'] = alarm_df['alarm_cell'].apply(str)
```
2. Use context manager to simplify file operation:
```
with open(os.path.join(log_path, 'log.txt'), 'w') as txt_file:
for k, v in module.output.items():
txt_file.write(f"{k}:{v}\n")
for x, y in module.output_sub.items():
txt_file.write(f"{x}:{y}\n\n")
```
3. Use `Pathlib` to simplify path operation:
```
fc_result_path = Path(done_path) / vin / 'fc_result'
fc_result_path.mkdir(parents=True, exist_ok=True)
pd.DataFrame(module.output).to_csv(fc_result_path / 'main_structure.csv')
pd.DataFrame(module.output_sub).to_csv(fc_result_path / 'sub_structure.csv')
```
4. Use f-string to simplify string formatting:
```
print(f"time cost of fault classification: {(end_time - start_time) * 1000.0} ms")
```
Here's the optimized code:
```
def fault_classification_wrapper(vin, main_path, data_path, log_path, done_path):
start_time = time.time()
isc_path = Path(done_path) / vin / 'isc_cal_result' / f'{vin}_report.xlsx'
if not isc_path.exists():
print('No isc detection input!')
isc_input = pd.DataFrame()
else:
isc_input = isc_produce_alarm(isc_path, vin)
ica_path = Path(done_path) / vin / 'ica_cal_result' / f'ica_detection_alarm_{vin}.csv'
if not ica_path.exists():
print('No ica detection input!')
ica_input = pd.DataFrame()
else:
ica_input = ica_produce_alarm(ica_path)
soh_path = Path(done_path) / vin / 'SOH_cal_result' / f'{vin}_sohAno.csv'
if not soh_path.exists():
print('No soh detection input!')
soh_input = pd.DataFrame()
else:
soh_input = soh_produce_alarm(soh_path, vin)
alarm_df = pd.concat([isc_input, ica_input, soh_input]).reset_index(drop=True)
alarm_df['alarm_cell'] = alarm_df['alarm_cell'].apply(str)
print(vin)
module = AutoAnalysisMain(alarm_df, main_path, data_path, done_path)
module.analysis_process()
with open(Path(log_path) / 'log.txt', 'w') as txt_file:
for k, v in module.output.items():
txt_file.write(f"{k}:{v}\n")
for x, y in module.output_sub.items():
txt_file.write(f"{x}:{y}\n\n")
fc_result_path = Path(done_path) / vin / 'fc_result'
fc_result_path.mkdir(parents=True, exist_ok=True)
pd.DataFrame(module.output).to_csv(fc_result_path / 'main_structure.csv')
pd.DataFrame(module.output_sub).to_csv(fc_result_path / 'sub_structure.csv')
end_time = time.time()
print(f"time cost of fault classification: {(end_time - start_time) * 1000.0} ms")
return
```