Python 在windows和linux中读取具有相对URL的文件夹中的所有文件

Python 在windows和linux中读取具有相对URL的文件夹中的所有文件,python,Python,我可以使用下面的命令读取具有相对路径的csv import pandas as pd file_path = './Data Set/part-0000.csv' df = pd.read_csv(file_path ) 但是当有多个文件时,我使用的是glob,文件路径混合了正斜杠和反斜杠。因此,由于路径错误,无法读取文件 allPaths = glob.glob(path) path=“./Data Set/useridtoul/*” path=“.\\Data Set\\useridto

我可以使用下面的命令读取具有相对路径的csv

import pandas as pd
file_path = './Data Set/part-0000.csv'
df = pd.read_csv(file_path )
但是当有多个文件时,我使用的是
glob
,文件路径混合了正斜杠和反斜杠。因此,由于路径错误,无法读取文件

allPaths = glob.glob(path)
path=“./Data Set/useridtoul/*”

path=“.\\Data Set\\useridtour\\*”

如果我正在使用

normalPath = os.path.normpath(path)
normalPath缺少相对的
/
\\\
,如下所示。 '数据集\UserIdToUrl\part-00000.csv'

下面的可以工作,什么是最好的方法使其在windows和linux中都工作?

".\\Data Set\\UserIdToUrl\\part-0000.csv"
or
"./Data Set/UserIdToUrl/part-0000.csv"
如有澄清问题,请提出。提前感谢您的评论和回答

更多信息: 我想问题只存在于windows中,而不存在于linux中。 下面是显示问题的最短程序。考虑在路径'//DATABAS//*/*'中有文件,它是正确的,当我将文件直接提供给文件“<代码> Pd .Read TysCV(‘/数据集/ UserIdToUrl /文件名,CSV’)< /代码> ./P> 更新2

我刚用谷歌搜索了环球图书馆。它的定义是“glob-Unix风格的路径名模式扩展”。我想,我需要一些可以在unix和windows中工作的实用程序功能。

试试这个:

import pandas as pd
from pathlib import Path

dir_path = 'Data Set'
datas = []
for p in Path(dir_path).rglob('*.csv'):
    df = pd.read_csv(p)
    datas.append(df)
您可以使用abspath

for file in os.listdir(os.path.abspath('./Data Set/')): 
    ...:     if file.endswith('.csv'): 
    ...:         df = pandas.read_csv(os.path.abspath(file))

/
或没有
/
的路径是相同的-两者都是相对于当前文件夹的。因此
'Data Set\useridtoul\part-00000.csv'
“/Data Set/useridtoul/part-0000.csv”
应该读取相同的文件。所以
normalPath
为您提供了正确的路径-您是否尝试读取它?@furas,是的,您是对的。但在windows中,glob给出的路径类似于“Data Set/useridtour\\part-0000.csv”或“Data Set\\useridtour\\part-0000.csv”。这些路径不工作。嗨@Waket Zheng,我已经能够读取单个文件了。我想读多个文件。我正在使用glob查找文件夹中的所有文件,但由于路径不正确,读取文件时出现问题。@IrshadAli我强烈建议您使用
pathlib。path
listdir和abspath函数正在引导我获得所需的结果。尽管路径中缺少“数据集”文件夹。所以我投票赞成你的答案。感谢您在形成绝对路径后尝试chdir(),希望它会有所帮助!
import os
import glob
import pandas as pd

path = "./Data Set/UserIdToUrl/*"
allFiles = glob.glob(path)

np_array_list = []
for file_ in allFiles:
    normalPath = os.path.normpath(file_)
    print(file_)
    print(normalPath)
    df = pd.read_csv(file_,index_col=None, header=0)
    np_array_list.append(df.as_matrix()) 
import pandas as pd
from pathlib import Path

dir_path = 'Data Set'
datas = []
for p in Path(dir_path).rglob('*.csv'):
    df = pd.read_csv(p)
    datas.append(df)
for file in os.listdir(os.path.abspath('./Data Set/')): 
    ...:     if file.endswith('.csv'): 
    ...:         df = pandas.read_csv(os.path.abspath(file))