Python 3自我复制文件到随机目录 - 然后运行文件

时间:2014-12-05 03:44:29

标签: python python-3.x random replicate

我有一个有趣的小脚本,我想在随机目录中复制它自己 - 然后运行它自己的副本。

我知道如何用(hacky)运行文件:

os.system('Filename.py')

我知道如何使用穿梭机复制文件 - 但我被困在随机目录中。也许如果我能以某种方式得到所有可用目录的列表,然后从列表中随机选择一个 - 然后从列表中删除该目录?

谢谢, Itechmatrix

3 个答案:

答案 0 :(得分:1)

您可以获取所有目录和子目录的列表,并按照以下方式随机随机播放:

import os
import random

all_dirs = [x[0] for x in os.walk('/tmp')]
random.shuffle(all_dirs)

for a_dir in all_dirs:
    print(a_dir)
    # do something witch each directory, e.g. copy some file there. 

答案 1 :(得分:0)

您可以获取目录列表,然后随机选择:

import os
import random
dirs = [d for d in os.listdir('.') if os.path.isdir(d)]
n = random.randrange(len(dirs))
print(dirs[n])

答案 2 :(得分:0)

如果您使用的是Mac,则根目录附近有相当数量的隐藏和受限目录。您可能会因可读性和可写性而遇到错误。解决这个问题的一种方法是遍历可用的目录并使用os模块对所有不进行排序。 之后,您可以使用random.choice模块从该列表中选择一个随机目录。

import os, random

writing_dir = []
for directory in os.listdir():
   if os.access(directory, W_OK) # W_OK ensures that the path is writable
     writing_dir.append(directory)

path = random.choice(writing_dir)

我现在正在处理类似的脚本。