如何从中排除目录操作系统列表目录结果?

2024-09-29 19:24:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个脚本,它将使用b64/b16对目录中的文件进行编码操作系统列表目录但它也列出了导致问题的目录,因为现在它正试图像文件一样对目录进行编码。在

如何从中排除目录操作系统列表目录结果?在

import os
import sys
import base64
import codecs
import time
import string
import glob

#C:\\Users\\Fedora\\Desktop\\Win 10
path = "C:\\Users\\Fedora\\Desktop\\Win 10"
dirs = os.listdir(path)
files = []
filecount = 0
fileprogress = 0
for file in dirs:
   files.append(file)
   filecount = filecount + 1

for x in files:
    os.system("cls")
    fileprogress = fileprogress + 1
    print("File " + str(fileprogress) + "/" + str(filecount))
    print("Encrypting " + x + "...")
    inputfile = open(path + "\\" + x, "rb")
    data = inputfile.read()
    inputfile.close()
    data = base64.b16encode(data)
    data = base64.b64encode(data)
    data = base64.b16encode(data)
    data = base64.b64encode(data)
    data = base64.b16encode(data)
    outputfile = open(path + "\\" + x + ".crypt", "wb")
    outputfile.write(data)
    outputfile.close()

Tags: pathimport目录编码列表dataosfiles
3条回答

您可以使用os.listdir(),而不是使用os.walk,它将为文件和目录返回单独的列表

python-oswalk-example

import os

path = "C:\\Users\\Fedora\\Desktop\\Win 10"

for (path, dirs, files) in os.walk(path):
    print path
    print dirs
    print files

pythoncentral os-walk

^{pr2}$

使用filter

filepath = "C:\\Users\\Fedora\\Desktop\\Win 10"
dirs = os.listdir(path)
files = filter(lambda x:os.path.isfile(os.path.join(filepath, x)), dirs)

或使用os.path.isfile()列出理解

^{pr2}$

您可以使用os.path.isdir函数检查当前文件是否为目录。在

另外,使用字符串格式化操作而不是字符串连接要好得多:not

print("File " + str(fileprogress) + "/" + str(filecount))

但是

^{pr2}$

这样的代码更容易理解和修改。在

相关问题 更多 >

    热门问题