鱼C论坛

 找回密码
 立即注册
查看: 1444|回复: 2

[已解决]python输出 文件问题

[复制链接]
发表于 2022-4-25 10:57:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. import pandas as pd
  2. import os
  3. import csv
  4. from scipy.signal import find_peaks
  5. import numpy as np
  6. # 全局变量,文件读取路径
  7. read_path = r"C:\Users\Administrator\Desktop\text2"
  8. # 全局变量,处理结果文件输出路径
  9. output_path = r"C:\Users\Administrator\Desktop\text2"
  10. # 获取文件路径
  11. def get_file_path():
  12.     read_path = r'C:\Users\Administrator\Desktop\text'    #读取文件路径
  13.     output_path = r'C:\Users\Administrator\Desktop\text1'        #写入结果文件路径
  14.     return read_path,output_path

  15. # 读取文件名称和内容
  16. def deal_files():
  17.     # 获取read_path下的所有文件名称(顺序读取的)
  18.     files = os.listdir(read_path)
  19.     if not os.path.exists(output_path):
  20.         os.mkdir(output_path)
  21.     for file_name in files:
  22.         # 读取单个文件内容
  23.         dfdata = pd.read_csv(read_path+"\"+file_name)
  24.         #处理单个文件(调用方法)
  25.         finish_dfdata = get_deal_file(dfdata)
  26.         # 输出结果到指定路径下
  27.         # finish_dfdata.to_csv(output_path + "\" + "处理结果_" + file_name,index=False)
  28.     print("文件处理完毕")

  29. # 处理单个文件程序 /针对不同批量处理文件进行修改对文件的处理代码,返回值:finish_dfdata/
  30. def get_deal_file(dfdata):  #以后批量处理任何类型数据只需要改这个函数
  31.     col_1 = dfdata["count"]   #获取所有Y值
  32.     data_1 = np.array(col_1)  #把所有Y值建立成一个一维数组
  33.     y_mat = list() #建立空列表
  34.     #循环 给空列表赋值
  35.     for i in range(256):  #256是除去所有行,本来想动态,但是一直报错,看到所有文件都是256行,就直接写了数字
  36.        y_mat.append(data_1[i])   #把值全赋给这个列表
  37.     peaks, _ = find_peaks(y_mat, distance=40) #36行-39行不知道是不是多余,你可以试试把y_mat直接换成data_1数组。 这一行是获取峰值,返回x坐标
  38.     # peaks2, _ = find_peaks(y_mat, prominence=100)      # BEST!
  39.     # peaks4, _ = find_peaks(y_mat, threshold=0.4)     # Required vertical distance to its direct neighbouring samples, pretty useless
  40.     print(peaks)  #上面三个都是提取峰值的功能,参数是来调取,减小震荡,你看看哪个更符合你的需求
  41.     return peaks


  42. # 主函数
  43. if __name__=="__main__":
  44.     # 获取文件输入和输出路径
  45.     read_path,output_path = get_file_path()
  46.     # 开始处理文件,并输出处理文件结果
  47.     deal_files()
复制代码





大佬们这个代码我输出成功了,但是输出结果建了一个空的文件夹text1 是什么情况呀 我想把结果保存到excel或者txt里,谢谢大佬
最佳答案
2022-4-25 14:12:06


你把第二十八行,也是唯一的一行输出数据到文件的代码 to_csv 注释了,代码怎么可能会有输出,把注释打开再试试看:

  1. import pandas as pd
  2. import os
  3. import csv
  4. from scipy.signal import find_peaks
  5. import numpy as np
  6. # 全局变量,文件读取路径
  7. read_path = r"C:\Users\Administrator\Desktop\text2"
  8. # 全局变量,处理结果文件输出路径
  9. output_path = r"C:\Users\Administrator\Desktop\text2"
  10. # 获取文件路径
  11. def get_file_path():
  12.     read_path = r'C:\Users\Administrator\Desktop\text'    #读取文件路径
  13.     output_path = r'C:\Users\Administrator\Desktop\text1'        #写入结果文件路径
  14.     return read_path,output_path

  15. # 读取文件名称和内容
  16. def deal_files():
  17.     # 获取read_path下的所有文件名称(顺序读取的)
  18.     files = os.listdir(read_path)
  19.     if not os.path.exists(output_path):
  20.         os.mkdir(output_path)
  21.     for file_name in files:
  22.         # 读取单个文件内容
  23.         dfdata = pd.read_csv(read_path+""+file_name)
  24.         #处理单个文件(调用方法)
  25.         finish_dfdata = get_deal_file(dfdata)
  26.         # 输出结果到指定路径下
  27.         finish_dfdata.to_csv(output_path + "" + "处理结果_" + file_name,index=False)
  28.     print("文件处理完毕")

  29. # 处理单个文件程序 /针对不同批量处理文件进行修改对文件的处理代码,返回值:finish_dfdata/
  30. def get_deal_file(dfdata):  #以后批量处理任何类型数据只需要改这个函数
  31.     col_1 = dfdata["count"]   #获取所有Y值
  32.     data_1 = np.array(col_1)  #把所有Y值建立成一个一维数组
  33.     y_mat = list() #建立空列表
  34.     #循环 给空列表赋值
  35.     for i in range(256):  #256是除去所有行,本来想动态,但是一直报错,看到所有文件都是256行,就直接写了数字
  36.        y_mat.append(data_1[i])   #把值全赋给这个列表
  37.     peaks, _ = find_peaks(y_mat, distance=40) #36行-39行不知道是不是多余,你可以试试把y_mat直接换成data_1数组。 这一行是获取峰值,返回x坐标
  38.     # peaks2, _ = find_peaks(y_mat, prominence=100)      # BEST!
  39.     # peaks4, _ = find_peaks(y_mat, threshold=0.4)     # Required vertical distance to its direct neighbouring samples, pretty useless
  40.     print(peaks)  #上面三个都是提取峰值的功能,参数是来调取,减小震荡,你看看哪个更符合你的需求
  41.     return peaks


  42. # 主函数
  43. if __name__=="__main__":
  44.     # 获取文件输入和输出路径
  45.     read_path,output_path = get_file_path()
  46.     # 开始处理文件,并输出处理文件结果
  47.     deal_files()
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-4-25 12:27:15 | 显示全部楼层

回帖奖励 +2 鱼币

粗略看了一下,没看到你写入的逻辑啊
没有 open,也没有with open
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-25 14:12:06 | 显示全部楼层    本楼为最佳答案   


你把第二十八行,也是唯一的一行输出数据到文件的代码 to_csv 注释了,代码怎么可能会有输出,把注释打开再试试看:

  1. import pandas as pd
  2. import os
  3. import csv
  4. from scipy.signal import find_peaks
  5. import numpy as np
  6. # 全局变量,文件读取路径
  7. read_path = r"C:\Users\Administrator\Desktop\text2"
  8. # 全局变量,处理结果文件输出路径
  9. output_path = r"C:\Users\Administrator\Desktop\text2"
  10. # 获取文件路径
  11. def get_file_path():
  12.     read_path = r'C:\Users\Administrator\Desktop\text'    #读取文件路径
  13.     output_path = r'C:\Users\Administrator\Desktop\text1'        #写入结果文件路径
  14.     return read_path,output_path

  15. # 读取文件名称和内容
  16. def deal_files():
  17.     # 获取read_path下的所有文件名称(顺序读取的)
  18.     files = os.listdir(read_path)
  19.     if not os.path.exists(output_path):
  20.         os.mkdir(output_path)
  21.     for file_name in files:
  22.         # 读取单个文件内容
  23.         dfdata = pd.read_csv(read_path+""+file_name)
  24.         #处理单个文件(调用方法)
  25.         finish_dfdata = get_deal_file(dfdata)
  26.         # 输出结果到指定路径下
  27.         finish_dfdata.to_csv(output_path + "" + "处理结果_" + file_name,index=False)
  28.     print("文件处理完毕")

  29. # 处理单个文件程序 /针对不同批量处理文件进行修改对文件的处理代码,返回值:finish_dfdata/
  30. def get_deal_file(dfdata):  #以后批量处理任何类型数据只需要改这个函数
  31.     col_1 = dfdata["count"]   #获取所有Y值
  32.     data_1 = np.array(col_1)  #把所有Y值建立成一个一维数组
  33.     y_mat = list() #建立空列表
  34.     #循环 给空列表赋值
  35.     for i in range(256):  #256是除去所有行,本来想动态,但是一直报错,看到所有文件都是256行,就直接写了数字
  36.        y_mat.append(data_1[i])   #把值全赋给这个列表
  37.     peaks, _ = find_peaks(y_mat, distance=40) #36行-39行不知道是不是多余,你可以试试把y_mat直接换成data_1数组。 这一行是获取峰值,返回x坐标
  38.     # peaks2, _ = find_peaks(y_mat, prominence=100)      # BEST!
  39.     # peaks4, _ = find_peaks(y_mat, threshold=0.4)     # Required vertical distance to its direct neighbouring samples, pretty useless
  40.     print(peaks)  #上面三个都是提取峰值的功能,参数是来调取,减小震荡,你看看哪个更符合你的需求
  41.     return peaks


  42. # 主函数
  43. if __name__=="__main__":
  44.     # 获取文件输入和输出路径
  45.     read_path,output_path = get_file_path()
  46.     # 开始处理文件,并输出处理文件结果
  47.     deal_files()
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-29 04:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表