如何随意选择目录中的文件打开并写入?

时间:2017-10-28 19:18:30

标签: python

我想在文件夹中随机选择一个文件打开它并写入其中。 我有:

import os, random
x = random.choice(os.listdir("F:\\1\\"))
y =open(x, 'w')
y.write('Hello World') 

但没有写入。任何想法如何解决它?

3 个答案:

答案 0 :(得分:1)

这是非常危险的,因为您为file writing打开了所有内容的blanks,因此您实际上randomly销毁了一个file

无论如何,如果这是您想要的,请使用with语句并记住os.listdir会在目录中返回file names,而不是paths ,因此您需要使用os.path.join2部分加在一起:

import os, random
path = r"F:\1"
x = random.choice(os.listdir(path))
with open(os.path.join(path, x), 'w') as y:
   y.write('Hello World')

答案 1 :(得分:0)

问题是您没有关闭文件:

import os, random
x = random.choice(os.listdir("F:\\1\\"))
y =open(x, 'w')
y.write('Hello World\n') 
y.close()

答案 2 :(得分:0)

os.listdir命令列出给定目录中的所有文件。它前置路径(目录名称)。你必须这样做

import os, random
dirname = "F:\\1\\"
x = dirname + random.choice(os.listdir(dirname))
y = open(x, 'w')
y.write('Hello World')

此外,最好在写完文件后关闭文件。您可以y.close()执行此操作。如果您使用with语句,则会自动完成此操作:

import os, random
dirname = "F:\\1\\"
x = dirname + random.choice(os.listdir(dirname))
with open(x, 'w') as y:
    y.write('Hello World')