【问题标题】:How to jump from one folder to another folder in python after reading all the files in one folder?读取一个文件夹中的所有文件后,如何在python中从一个文件夹跳转到另一个文件夹?
【发布时间】:2020-05-06 08:17:38
【问题描述】:

我正在编写代码来连续检查许多文件夹和目录中文件的大小。

例如:我有多个目录,每个目录下有多个文件,每个文件夹下也有多个文件。

我的代码必须读取D:/coding/dir1/folder1 中的所有文件,例如sample1.txt, sample2.txt, sampl3.txt。

读取文件后应该转到D:/coding/dir1/folder2并检查sample4.txt, sample5.txt, sample6.txt等。当读取目录中的所有文件夹时,它应该跳转到另一个目录(如D:/coding/dir2/folder1)。

让我知道如何实现这一目标。

D:/coding
- dir1
-- folder1
--- sample1.txt
--- sample2.txt
--- sample3.txt
-- folder2
--- sample4.txt
--- sample5.txt
--- sample6.txt
- dir2
-- folder1
--- sample7.txt
...

【问题讨论】:

  • 请用您尝试过的代码更新您的问题。

标签: python python-3.x file directory path


【解决方案1】:

0

我找到了解决方案。

导入操作系统

重新导入

导入全局路径1 = r'D:\rmchal0\xml'

os.chdir(path1)

打印(os.getcwd())

listdir = os.listdir(path1)

打印(列表目录)

def txt_check(路径):

os.chdir(路径)

listdir = os.listdir(路径)

对于 listdir 中的文件:

if files.endswith('.txt'):

# txt_file= files.endswith('.txt')

    file_size = os.path.getsize(files)

    if file_size > 0:

        print("this file has data: ", files, "with file size:", file_size, "in", os.getcwd())

打印(列表目录) def file_size_check(path):

os.chdir(路径)

打印(os.getcwd())

listdir = os.listdir(路径)

打印(列表目录)

对于 listdir 中的文件:

if (files.find('.') == -1):

    path2= os.path.join(path,files)

    if files.lower()== 'nok':

        print(files)

        txt_check(path2)

    else:

        #path2 = os.path.join(path,files)

        file_size_check(path2)

file_size_check(path1)

【讨论】:

    【解决方案2】:

    所以我有以下文件夹结构

    D:\coding
    ├───folder1
    │       sample1.txt
    │       sample2.txt
    │
    └───folder2
            sample1.txt
            sample2.txt
    

    使用pathlib 查找文件并使用stat 函数获取文件大小。

    from pathlib import Path
    
    files = Path("D:/coding").rglob('*')
    for f in files:
        if f.is_file():
            print(f'{str(f)} file size is : {f.stat().st_size}')
    

    输出

    D:\coding\folder1\sample1.txt file size is : 728
    D:\coding\folder1\sample2.txt file size is : 2378
    D:\coding\folder2\sample1.txt file size is : 247
    D:\coding\folder2\sample2.txt file size is : 1486
    

    【讨论】:

      【解决方案3】:

      你可以写一个递归函数,返回所有文件,然后读入:

      import os
      
      def read_folder(folder):
          files = []
          for f in os.listdir(folder):
              f = os.path.join(folder, f)
              if os.path.isdir(f):
                  files = [*files, *read_folder(f)]
              else:
                  files.append(f)
          return files
      

      【讨论】:

        猜你喜欢
        • 2021-09-04
        • 2014-09-17
        • 2010-09-08
        • 2023-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多