Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.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_Import_Tkinter - Fatal编程技术网

正在寻找一种在Python中迭代文件并有条件地从这些文件导入变量的方法

正在寻找一种在Python中迭代文件并有条件地从这些文件导入变量的方法,python,import,tkinter,Python,Import,Tkinter,我实际上已经管理了第一部分(遍历文件)。这是第二部分(从迭代文件导入变量),我陷入了困境。以下是我代码的相关部分: import os, sys for file in os.listdir (): if "py" in file.split ("."): counter = 0 for line in open (file): if "name = " in line: counter += 1

我实际上已经管理了第一部分(遍历文件)。这是第二部分(从迭代文件导入变量),我陷入了困境。以下是我代码的相关部分:

import os, sys
for file in os.listdir ():
    if "py" in file.split ("."):
        counter = 0
        for line in open (file):
            if "name = " in line:
                counter += 1
            if "profile = [" in line and counter == 1:
                from file import name
                people_list.add_command(label=name,command=get_people)
在不明显的情况下,这意味着从python文件动态生成tkinter菜单选项

我意识到变量“file”不能在“from/import”语句中工作,因为它包含扩展名为.py的文件名。我想找到一些简单的方法,在每次迭代之后,替换文件名减去扩展名,以允许导入


我想我可以通过更喜欢的线切割或reg-ex来实现这一点,甚至不用担心进口。但是,是否有一些“微创”的方法来修改我现有的代码以使其工作?

根据您的工作目录编辑路径名,然后您就可以轻松地实现此代码,我只修复了此代码中的导入问题,因此如果其他方法和函数出现任何错误,请注意它们

import sys,os

PATH = r'C:\\Users\\Anmol\\Desktop\\image peocessing\\'

for file_name in os.listdir(PATH):
    if ".py" in file_name:
        counter = 0
        for line in open(file_name):
            if "name = " in line:
                counter+=1
            if "profile = [" in line and counter == 1:
                from file_name.split(".")[0] import name
                #You could have used simple string slicing file_name[:-3] but that will not work if 
                #you have .pyc files in your folder, So this is a more robust approach .
                people_list.add_command(label=name,command=get_people)

您不需要使用两个if条件,只需将它们相互嵌套即可从给定文件名中删除扩展名
.py
的最简单方法是使用字符串切片,如:
file\u name[:-3]