我正在尝试:
但是在将绝对路径转换回相对路径时,我陷入了第3步,因为当我只希望它为../../../../Desktop/2018.12.31.csv
时,我的输出看起来像2018.12.31
。
例如,假设目录包含两个文件:2018.12.31.csv
和2018.11.30.csv
。
2018.12.31.csv
A B
1 2
2018.11.30.csv
A B
3 4
运行程序后:
import os
import pandas as pd
folder = ('/Users/user/Desktop/copy')
files = os.listdir(folder)
file_list = list()
for file in files:
file = os.path.join(folder, file)
if file.endswith('.csv'):
df = pd.read_csv(file, sep=";")
df['filename'] = os.path.relpath(file)
file_list.append(df)
all_days = pd.concat(file_list, axis=0, ignore_index=True, sort=False)
all_days.to_csv("/Users/user/Desktop/copy/all.csv")
我希望输出为:
A B filename
1 2 2018.12.31
3 4 2018.11.30
但是它是:
A B filename
1 2 ../../../../Desktop/copy/2018.12.31.csv
3 4 ../../../../Desktop/copy/2018.11.30.csv
如果您已经具有.csv
文件的完整文件路径,则可以使用os.path
模块仅获取文件名:
df['filename'] = os.path.splitext(os.path.split(file)[1])[0]
os.path.relpath
返回相对于当前目录的文件位置。您可以使用os.path.basename(path)
获得原始文件名,或者仅将文件名保留为单独的变量并设置df['filename'] = file_orig
。