Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在不同的文件夹上循环_Python_For Loop - Fatal编程技术网

Python 在不同的文件夹上循环

Python 在不同的文件夹上循环,python,for-loop,Python,For Loop,我想使用一个txt.file进行操作,每个txt.file都有相同的名称,但位于不同的子文件夹中。我试图创建一个包含文件夹名称的列表,并使用os.chdir调用,但这不起作用 folderlist=["folder1","folder2","folder3","folder4"] i=0 for i in range(4): os.chdir(r"//Desktop/foldersforreading/folderlist[i]") file=pd.read_table('fi

我想使用一个txt.file进行操作,每个txt.file都有相同的名称,但位于不同的子文件夹中。我试图创建一个包含文件夹名称的列表,并使用os.chdir调用,但这不起作用

folderlist=["folder1","folder2","folder3","folder4"]
i=0
for i in range(4):

    os.chdir(r"//Desktop/foldersforreading/folderlist[i]")
    file=pd.read_table('file.txt',sep=',',header=0, index_col=None)
 #do something 
 #move to next one 
 i=i+1
如果文件夹名称为folder1、folder2

但如果要访问列表中的字符串:

for i in folderlist
    os.chdir(r"//Desktop/foldersforreading/{}".format(i))
如果你想在里面看到你的“folderlist”,你也可以添加(有点多余),但是:

例如:

some_list = ['this', 'is', 'some', 'list']

for i in range(0,5):
    print(r"//Desktop/foldersforreading/{folderlist_i}".format(folderlist_i = i))

print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')

for i in some_list:
    print(r"//Desktop/foldersforreading/{folderlist_i}".format(folderlist_i = i))
输出:

//Desktop/foldersforreading/0
//Desktop/foldersforreading/1
//Desktop/foldersforreading/2
//Desktop/foldersforreading/3
//Desktop/foldersforreading/4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//Desktop/foldersforreading/this
//Desktop/foldersforreading/is
//Desktop/foldersforreading/some
//Desktop/foldersforreading/list

尝试一下上面的代码,它应该可以解决您的问题,并且语法简单,与您所要求的类似。

使用定义的folderlist有什么方法可以做到这一点吗?因为这是第一个文件,我想看看使用了哪个文件夹名,然后使用foldername检查第二种格式,基本上字符串中的
{}
将被格式化为
format()
函数中的任何变量。当您在
folderlist
中循环元素时,则
os.chdir(r”//Desktop/foldersforreading/{}.format(i))
表示
os.chdir(r”//Desktop/foldersforreading/{{python代码中的任何i})
这是每个循环迭代中folderlist的一个迭代器。@utahpyml如果我包括一个例子会有帮助吗?是的,一个例子会非常有帮助。因为我得到消息没有找到这样的目录:folderforreading/0@utahpyml因为您需要在folderlist中的元素:
上循环,而不是使用'range()“。要点是,
{}
非常通用,它将在字符串中包含任何变量,无论是字符串(在folderlist中循环元素的情况下)还是整数/浮点(在循环整数范围的情况下)迭代变量
i
是在循环的标题
中为i…
定义的。你不必在循环之前声明和定义它,也不必在循环体内部增加它。Python在循环中也有一个很好的特性,比如@HadiFarah在他的答案中显示。我得到一个错误:列表索引必须是整数或整数切片,不是吗str@utahpyml你是对的!我的错误,我测试了一点代码,遇到了相同的问题。你对范围(4):
中的I使用
是正确的。将代码切换回该范围应该可以解决你的问题(就像它对我一样)。我已更新了我的代码。
some_list = ['this', 'is', 'some', 'list']

for i in range(0,5):
    print(r"//Desktop/foldersforreading/{folderlist_i}".format(folderlist_i = i))

print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')

for i in some_list:
    print(r"//Desktop/foldersforreading/{folderlist_i}".format(folderlist_i = i))
//Desktop/foldersforreading/0
//Desktop/foldersforreading/1
//Desktop/foldersforreading/2
//Desktop/foldersforreading/3
//Desktop/foldersforreading/4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//Desktop/foldersforreading/this
//Desktop/foldersforreading/is
//Desktop/foldersforreading/some
//Desktop/foldersforreading/list
folderlist=["folder1","folder2","folder3","folder4"]
#i=0 #unneeded counter
for i in range(4):

    os.chdir(r"//Desktop/foldersforreading/"+folderlist[i])
    #os.chdir(r"//Desktop/foldersforreading"+"//"+folderlist[i]) #Alternative if above fails
    file=pd.read_table('file.txt',sep=',',header=0, index_col=None)
 #do something 
 #move to next one 
 #i=i+1 #Commented out since you don't need to iterate your counter