我正在尝试编写一个导入文件的脚本,然后对该文件执行某些操作并将结果输出到另一个文件中.
df = pd.read_csv('somefile2018.csv')
上面的代码完全正常.但是,我想避免在代码中硬编码文件名.
该脚本将在包含script.py多个csv文件的文件夹(目录)中运行.
我尝试过以下方法:
somefile_path = glob.glob('somefile*.csv')
df = pd.read_csv(somefile_path)
但是我收到以下错误:
ValueError: Invalid file path or buffer object type: <class 'list'>
glob返回一个列表,而不是一个字符串.该read_csv函数将字符串作为查找文件的输入.试试这个:
for f in glob('somefile*.csv'):
df = pd.read_csv(f)
...
# the rest of your script
Run Code Online (Sandbox Code Playgroud)
小智 6
要读取遵循特定模式的所有文件,只要它们共享相同的架构,请使用此函数:
import glob
import pandas as pd
def pd_read_pattern(pattern):
files = glob.glob(pattern)
df = pd.DataFrame()
for f in files:
df = df.append(pd.read_csv(f))
return df.reset_index(drop=True)
df = pd_read_pattern('somefile*.csv')
Run Code Online (Sandbox Code Playgroud)
这将适用于绝对或相对路径。