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

标签 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 循环访问该文件。

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

最佳答案

您收到权限错误,因为 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))

此时您可能想要更改 tfilename 的名称和xfilename所以整个代码会更有意义。

另外,我不确定为什么你的代码调用 os.path.join有一个参数。没有任何效果。

关于python - 如果另一个文件夹中的 .xls 同名,如何打开文件夹中的 .txt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52149819/

相关文章:

python - 为组创建唯一的 id

python - fit() 缺少 1 个必需的位置 'y'

python - 失去与 MySQL 服务器的连接

javascript - 如何仅在满足条件时为实例执行嵌套 for 循环内的代码?

python - 在两列之间单独对每一行进行排序

r - 循环遍历列并返回值

python - 如何了解随机森林中特定样本的特征及其贡献

java - For Each 循环有效,但迭代器无效

调用 return 语句时,Javascript 不会退出 for 循环

python - 对 pandas 中的交叉表数据进行排序以获得更多集群热图