【问题标题】:Why python os is working only on default directory and how to change it?为什么 python os 仅适用于默认目录以及如何更改它?
【发布时间】:2020-10-14 10:28:45
【问题描述】:
import os
import shutil

FileCount = 0
filelist = []
ext = str(input())

for foldername, subfolders, filenames in os.walk('F:\\'):    
    for filename in filenames:
        if filename.endswith(ext):
            txtFileCount+=1;
            filelist.append(filename)
            print(os.path.abspath(filename))


print(txtFileCount)
print(filelist)

输出: 文件位于“G”目录,而选择的目录为“F”。

G:\Pillow\filecheckerProject\free_cam_8_7_0.msi
G:\Pillow\filecheckerProject\BlueJ-windows-421.msi
G:\Pillow\filecheckerProject\free_cam_8_7_0.msi
G:\Pillow\filecheckerProject\mysql-installer-web-community-8.0.17.0.msi
G:\Pillow\filecheckerProject\PowerToysSetup.msi
5
['free_cam_8_7_0.msi', 'BlueJ-windows-421.msi', 'free_cam_8_7_0.msi', 'mysql-installer-web-community-8.0.17.0.msi', 'PowerToysSetup.msi']

【问题讨论】:

  • 请正确格式化您的代码,click here to learn how
  • 请澄清您的问题,也正如@БогданОпир 所说,正确格式化您的代码,以便更容易理解。
  • 你忽略了os.walk给你的foldername

标签: python-3.x operating-system shutil


【解决方案1】:

当您执行os.path.abspath(filename) 时,您只传递了一个文件名,例如'free_cam_8_7_0.msi'abspath 函数无法仅通过这些信息知道您正在谈论的文件夹。

但是os.walk 给了你文件夹;你只是没有使用它。

for foldername, subfolders, filenames in os.walk('F:\\'):    
    for filename in filenames:
        if filename.endswith(ext):
            txtFileCount+=1;
            filelist.append(filename)
            filepath = os.path.join(foldername, filename) # join the folder name and the filename
            print(os.path.abspath(filepath))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 2012-06-09
    相关资源
    最近更新 更多