【问题标题】:File scanner in python 3python 3中的文件扫描器
【发布时间】:2018-02-05 14:49:39
【问题描述】:

我正在学习python atm,为了在学习的同时做一些有用的事情,我制定了一个小计划:

  1. 读取特定的磁盘驱动器分区。结果:目录列表
  2. 迭代目录和子目录中的每个文件。结果:目录中的文件列表
  3. 读取文件信息:扩展名结果:文件扩展名
  4. 读取文件信息:size 结果:Size
  5. 读取文件信息:创建日期结果:日期
  6. 读取文件信息:日期修改日期 读取文件信息:所有者结果:所有权

在第 1 步我尝试了几种方法,scandir:

import os as os
x = [f.name for f in os.scandir('my_path') if f.is_file()]
with open('write_to_file_path', 'w') as f:
    for row in x:
        print(row)
        f.write("%s\n" % str(row))
f.close()

还有这个:

import os as os
rootDir = ('/Users/Ivan/Desktop/revit dynamo/')
for dirName, subdirList, fileList in os.walk(rootDir):
    print('Found directory: %s' % dirName)
for fname in fileList:
    print('\t%s' % fname)

虽然我很难将结果写入 txt 文件。

请问什么是目前对特定目录进行审计的理想方法,所有相关信息提取并存储为 txt 文件中的表格?

P.S.:我在这里的第一个问题,所以请不要严格判断:)

【问题讨论】:

标签: python python-3.x file directory


【解决方案1】:

由于您正在学习 Python3,我建议作为使用 os.path 的低级路径操作的替代方法,您可以尝试 pathlib(Python 3.4 标准库的一部分):

from pathlib import Path
p = Path(mydir)

#list mydir content
for child in p.iterdir(): 
    print(child)

#Recursive iteration 
for child in p.glob("**/*"):
    if child.is_dir():
        #do dir stuff
    else:
        print(child.suffix)  # extension
        print(child.owner()) # file owner

        child_info = child.stat()
        #file size, mod time
        print(child_info.size,child_info.st_mtime)

文件创建时间取决于平台,但post 提供了一些解决方案。

Path 的字符串可以作为str(p) 访问。

使用pathlib写入文件:

textfile = Path(myfilepath)

# create file if it doesn't exist
textfile.touch()

# open file, write string, then close file
textfile.write_text(mystringtext)

# open file with context manager
with textfile.open('r') as f:
    f.read()

【讨论】:

  • 谢谢。看来在线教程还不够。请你推荐任何好的py3书来阅读?
  • @Ivan Baranov 我认为教程有助于了解基础知识。到那时,您将更有能力表达您的问题/查询,以便您可以搜索您需要的答案。
猜你喜欢
  • 1970-01-01
  • 2013-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
  • 1970-01-01
相关资源
最近更新 更多