【问题标题】:Load biggest csv file of a folder in python在python中加载文件夹的最大csv文件
【发布时间】:2020-08-18 14:43:00
【问题描述】:

我的电脑上有一个文件夹,其中保存了几个文件。如何仅自动加载最大的文件(以 kb 为单位)?

现在我可以使用:

#Sort it with the help of windows, biggest file on top and then:
import pandas as pd
df = pd.read_csv(r'C:\...\FileABC.csv') #when I know FileABC is listed on the top

有没有办法在 python 中自动执行此操作?然后我可以跳过 windows 中的手动调整。

【问题讨论】:

  • 你如何在这里定义big?行数、列数、文件占用的大小??
  • MB 大小
  • 检查link - 您可以使用os 模块获取文件大小。 os.stat('filename').st_size 应该为您提供文件大小(以字节为单位)。 os.listdir('dirname') 应该为您提供给定目录中所有文件的列表 dirname
  • 提示:os.stat 在其st_size 成员中给出文件的大小。

标签: python pandas csv


【解决方案1】:

试试这个:

import os
import pandas as pd
basedir = 'C:/Users/viupadhy/Desktop/Stackoverflow'
names = os.listdir(basedir)
paths = [os.path.join(basedir, name) for name in names]
sizes = [(path, os.stat(path).st_size) for path in paths]
file = max(sizes, key=lambda x: x[1])
print(file)

df = pd.read_csv(file[0])
df

输出:

【讨论】:

    【解决方案2】:

    一个简单的方法:

    import os
    
    
    def find_largest_file(path):
        largest = None
        max_size = 0
        for filename in os.listdir(path):
            if os.path.isfile(filename):
                size = os.path.getsize(filename)
                if size > max_size:
                    largest = filename
                    max_size = size
        return largest
    
    
    print(find_largest_file(path))
    # ... whaterver largest file you have in `path`.
    

    这可以通过仅过滤.csv 扩展等来进一步改进。

    【讨论】:

      【解决方案3】:

      你可以使用类似的东西:

      import os
      import pandas as pd
      
      
      folder_path = "C:\\programs\\"
      
      file_list = os.listdir(folder_path)
      biggest_file = os.path.join(folder_path, file_list[0])
      
      for file in file_list:
          file_location = os.path.join(folder_path, file)
          size = os.path.getsize(file_location)
      
          if size > os.path.getsize(biggest_file):
              biggest_file = file_location
      
      df = pd.read_csv(biggest_file)
      

      【讨论】:

      • 在此过程中跟踪文件大小不是更有效吗?这将在每次迭代中为您节省一个额外的os.path.getsize()
      • 是的,这可以改进,我只是写了一个快速的解决方案,当我尝试时它工作了。谢谢你的建议。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多