我正在开发数据列检查,但我很难确定如何正确循环文件列表。我有一个包含csv文件列表的文件夹。我需要检查每个文件是否保持某种结构。我并不担心检查每个文件的结构,我更担心如何正确地从dir中提取每个文件,数据帧,然后转到下一个文件。任何帮助将非常感激。
def files(path):
files = os.listdir(path)
len_files = len(files)
cnt = 0
while cnt < len_files:
print(files)
for file in os.listdir(path):
if os.path.isfile(os.path.join(path, file)):
with open(path + file, 'r') as f:
return data_validate(f)
def data_validate(file):
# Validation check code will eventually go here...
print(pd.read_csv(file))
def run():
files("folder/subfolder/")
你用的是哪个版本的python?
我使用Pathlib和python3.6 +用pandas做了很多文件处理。我发现Pathlib易于使用,但你仍然需要重新考虑一些他们还没有实现的功能。一个优点是Path对象可以不经修改地传递给os函数 - 所以我喜欢灵活性。
这是一个函数,我曾经递归地通过一个任意的目录结构,我已经修改过,看起来更像你上面想要实现的,返回一个DataFrames列表。
如果您的目录始终是扁平的,则可以进一步简化此操作。
def files(directory):
top_dir = Path(directory)
validated_files = list()
for item in top_dir.iterdir():
if item.is_file():
validated_files.append(data_validate(item))
elif item.is_dir():
validated_files.append(files(item))
return validated_files