python - 当我将文件名存储在列表中时,在 python 中打开多个文件的最佳方法是什么?
问题描述
我正在处理大量数据,这些数据可以分类为写入多个文件之一。我试图一次打开所有文件,以便在浏览数据时写入文件(我正在使用 Python 3.7)。
我可以做多个
with open(...) as ...
语句,但我想知道是否有一种方法可以做到这一点,而不必为每个文件写出打开的语句。
我正在考虑使用 for 循环打开文件,但听说这不是异常安全的,而且是不好的做法。
那么您认为打开多个文件名存储在列表中的文件的最佳方法是什么?
解决方案
我通常使用glob
anddict
这样做。这将假设您的数据是 .csv 格式,但对这个想法并不重要:
您可以使用glob
所有文件创建一个变量。假设它们位于Data
主文件夹内的一个文件夹中:
data=glob.glob('Data/'+'*.csv') #Put every .csv file into a list
#you can change .csv with wathever you need
dict_data={} #Create empty dictionary
for n,i in enumerate(sorted(data)):
dict_data['file_'+str(n+1)]=pd.read_csv(i)
在这里您可以替换为您的with...open
声明。最后,您将获得一个dict
with keys file_1
,...,file_n
这将包含在您的数据中。我发现它是处理大量数据的最佳方式。但是,如果您使用的数据类型不止一种,则可能需要进行一些修改。
希望能帮助到你
推荐阅读
- c++ - 如何在 Rcpp 中乘以 S4 对象?缺少运算符定义
- typescript - 首先声明键 ("key1" | "key2"),然后强制另一个对象类型必须具有这些键
- scala - Scala:模式匹配案例类的圈复杂度太高
- javascript - 如何使用 passport-google-oauth20 获取用户电子邮件
- javascript - (REACT) 优化 API 调用链导致组件不渲染
- javascript - Jquery Datatable 分页按钮样式修复
- aws-amplify - AWS Amplify 创建多个具有重复信息的 DynamoDB 表?
- flutter - 如何从映射转换字符串值
> 键入 Double?扑 - python - 在 Mac OS Catalina 上卸载所有 `pip` 包
- django - django 如何在模板中循环查看和打印