如果另一个文件夹中的.xls同名,如何打开一个文件夹中的.txt

时间:2018-09-03 12:28:31

标签: python for-loop dataframe file-permissions

有两个包含个人数据的文件夹,一个包含.txt文件的文件夹,另一个包含.xls文件的文件夹。

Folder1 :['A.txt', 'B.txt', 'C.txt']
Folder2 :['A.xls', 'B.xls', 'C.xls']

我想打开同一个人的两个文件,并根据.xls文件中的信息对.txt文件执行一些操作。

这是我尝试过的:

Tpath = 'Path to Folder1'
Xpath = 'Path to Folder2'
for tfilename in glob.glob(os.path.join(Tpath)):
for tfile in os.listdir(Tpath):
    for xfilename in glob.glob(os.path.join(Xpath)):
        for xfile in os.listdir(Xpath):
            if (xfile[:-4] == tfile[:-4]):
                tdf = pd.read_csv(tfilename)
                xdf = pd.read_excel(xfilename)      

我遇到“权限被拒绝”错误。我知道这是由于我试图从一个文件夹的for循环访问另一个文件夹的for循环而导致的。

但是我不知道如何解决这个问题。有人可以在这里纠正我的错误吗?

1 个答案:

答案 0 :(得分:1)

您收到权限错误,因为tfilenamexfilename最终是目录的路径,而不是文件的路径。您可以使用print代替read_csvread_excel来验证这一点:

Tpath = r'\some\path\txt'
Xpath = r'\some\path\xls'
for tfilename in glob.glob(os.path.join(Tpath)):
    for tfile in os.listdir(Tpath):
        for xfilename in glob.glob(os.path.join(Xpath)):
            for xfile in os.listdir(Xpath):
                if (xfile[:-4] == tfile[:-4]):
                    print(tfilename)
                    print(xfilename)

输出

'\some\path\txt'
'\some\path\xls'

在打开文件之前,您必须将文件名加入路径,即

tdf = pd.read_csv(os.path.join(tfilename, tfile))
xdf = pd.read_excel(os.path.join(xfilename, xfile))

此时,您可能需要更改tfilenamexfilename的名称,以便使整个代码更有意义。

此外,我不确定您的代码为什么用单个参数调用os.path.join。它没有任何作用。