import os import pandas as pd def txt_to_excel(txt_path, excel_path): # 读取txt文件 with open(txt_path, 'r') as f: lines = f.readlines() # 解析txt文件中的数据 data = [] for line in lines: items = line.strip().split() year, month, day, precip = items[0], items[1], items[2], items[3] # 将降水值转为浮点型并将-999和负值替换为0 precip = float(precip) if precip < 0 or precip == -999: precip = 0 data.append([year, month, day, precip]) # 将数据转为DataFrame格式,并添加表头 df = pd.DataFrame(data, columns=['年', '月', '日', '降水']) # 保存为Excel文件 df.to_excel(excel_path, index=False, engine='openpyxl') def traverse_files(folder_path): # 遍历指定文件夹中的txt文件,并转换为Excel文件 for root, dirs, files in os.walk(folder_path): for file in files: if file.endswith('.txt'): # 构造Excel文件名 excel_name = os.path.splitext(file)[0].split('-')[-1] + '.xls' excel_path = os.path.join(root, excel_name) txt_path = os.path.join(root, file) txt_to_excel(txt_path, excel_path) if __name__ == '__main__': folder_path = 'E:/project/work5-8' traverse_files(folder_path)
时间: 2023-06-18 22:02:13 浏览: 124
这段代码的功能是将指定文件夹中的所有以 .txt 结尾的文件读取并解析数据,然后将数据保存为 Excel 文件。具体实现流程如下:
1. traverse_files 函数通过 os.walk 遍历指定文件夹中的所有文件。
2. 对于每个文件,如果文件名以 .txt 结尾,则调用 txt_to_excel 函数将文件内容解析并保存为 Excel。
3. txt_to_excel 函数首先使用 open 函数读取 txt 文件内容。
4. 然后对每一行数据进行解析,提取年、月、日和降水值,并将降水值转为浮点型。
5. 如果降水值为负数或 -999,则将其替换为 0。
6. 最后将解析后的数据转为 DataFrame 格式,并添加表头。
7. 最后将 DataFrame 保存为 Excel 文件。
注意:在运行代码前需要确保 openpyxl 库已经安装。
相关问题
import os import pandas as pd import time while True: start = time.perf_counter() def get_txt_files(folder_path): files = [] try: for root, dirs, filenames in os.walk(folder_path): for filename in filenames: if filename.endswith(".txt"): files.append(os.path.abspath(os.path.join(root, filename))) except Exception as e: print("Error: {}".format(e)) return files def combine_txt_files(txt_files): content = "" try: for txt_file in txt_files: with open(txt_file, "r") as f: content += f.read() except Exception as e: print("Error: {}".format(e)) return content def write_combined_content_to_file(content, file_path): try: with open(file_path, "w") as f: f.write(content) except Exception as e: print("Error: {}".format(e)) def txt_to_excel(txt_file, excel_file): try: df = pd.read_csv(txt_file, delimiter="\t", header=None) df.to_excel(excel_file, index=False, header=None) except Exception as e: print("Error: {}".format(e)) if __name__=="__main__": folder_path="Z:\看板v2" txt_files=get_txt_files(folder_path) combined_content=combine_txt_files(txt_files) combined_file_path="D:\\測試log\\TXT合1并.txt" write_combined_content_to_file(combined_content,combined_file_path) excel_file_path="D:\\測試log\\123.xlsx" txt_to_excel(combined_file_path,excel_file_path) end = time.perf_counter() print('運行時間為:{}秒'.format(end-start)) time.sleep(30)
这是一段 Python 代码,主要功能是将指定文件夹中的所有 .txt 文件合并为一个文件,并将合并后的内容转换为 Excel 文件。
首先使用 `os.walk` 函数获取指定文件夹中所有的 .txt 文件路径,然后使用 `open` 函数读取每个文件的内容,并将所有内容合并为一个字符串。接着使用 `open` 函数将合并后的字符串写入到指定路径的文件中。最后使用 Pandas 库中的 `read_csv` 函数读取合并后的文本文件,并使用 `to_excel` 函数将其转换为 Excel 文件。
代码中使用了一个死循环,每隔 30 秒就会执行一次上述操作。遇到任何异常都会输出错误信息。最后会输出每次操作的运行时间。
import os import shutil import PIL.Image as Image import cv2 import numpy as np import pandas as pd def selet_pic(imgpath,labpath): pic_path = os.listdir(labpath) list = [] for alldir in pic_path: child = os.path.join(labpath,alldir) img = Image.open(child) # img.show() pic_arrays = np.array(img) #将图片转化成数组 if np.mean(pic_arrays) == 0: # print("图片为黑色",alldir) list.append(alldir) # print(list) return list def del_pic(list): for i in list: img_path = os.path.join(imgpath,i) lab_path = os.path.join(labpath,i) print(lab_path) os.remove(img_path) #直接删除 os.remove(lab_path) # shutil.move(img_path, img_del_path) # shutil.move(lab_path,lab_del_path) #移到指定位置 if __name__== "__main__": imgpath = r'D:\shiyan\img\waterbody\water\img_256' labpath = r'D:\shiyan\img\waterbody\water\label_256' list = selet_pic(imgpath,labpath) # del_pic(list,img_del_path,lab_del_path) del_pic(list)
这段代码定义了两个函数`selet_pic`和`del_pic`,并在`if __name__== "__main__":`语句下面进行调用。具体来说,代码的作用是:
1. `selet_pic`函数:该函数接受两个参数`imgpath`和`labpath`,分别表示图片文件和标签文件所在的目录。在该函数中,首先通过`os.listdir`获取标签文件目录下的所有文件名,并将它们存储在`pic_path`列表中。然后,遍历该列表中的每一个文件名,将其拼接为完整的路径,读取对应的图片文件并将其转化成数组形式。接着,判断该数组的平均值是否等于0,如果是,则将该文件名添加到`list`列表中。最后,返回`list`列表。
2. `del_pic`函数:该函数接受一个参数`list`,表示要删除的文件名列表。在该函数中,遍历`list`列表中的每一个文件名,将其拼接为完整的路径,并使用`os.remove`函数直接删除对应的图片文件和标签文件。
3. 在`if __name__== "__main__":`语句下面,定义了`imgpath`和`labpath`两个变量,分别表示图片文件和标签文件所在的目录。接着,调用`selet_pic`函数获取需要删除的文件名列表,然后调用`del_pic`函数删除对应的文件。
阅读全文