所以我要做的是:1)使用for循环在目录中创建文件夹,2)将输出文件写入此文件夹
我正在尝试使用for循环中的值作为input2名称和文件夹名称的一部分
import os,re
values = ['alpha','123']
query_file = '/Users/name/Desktop/query.txt' # 'a\nb\nc\nd\n4\n5\n6\n'
reading_file = '/Users/name/Desktop/alpha.txt' #'abcdefghijklmnopqrstuvwxyz'
#reading_file = '/Users/name/Desktop/123.txt' #'123456789'
output_file='/Users/name/Desktop/output.txt'
def func(input1,input2,output):
query=open(input1,'r').read().split('\n')
reading = open(input2,'r').read()
dir,file=os.path.split(input1)
temp_out= os.path.join(dir,output)
out_file=open(temp_out,'w')
for line in query:
m = re.search(line,reading)
if bool(m) == True:
out_file.write( str( m.start() ) +'\n')
print func(query_file,reading_file,output_file)
所以它创建了一个名为output.txt的文件,它在SAME目录中作为输入,但我希望它(根据名称创建一个文件夹)并放入文件(在文件夹中)
现在,我必须一次执行此操作并单独创建文件夹以放置文件。 。 。我想使用'值'列为' reading_file'结尾(第一个结束于' alpha'后跟.txt扩展名,第二个结尾为' 123'后跟.txt)
最后应该有两个文件夹:
'/Users/name/Desktop/alpha/output.txt'
'/Users/name/Desktop/123/output.txt'
*请注意输出应该是不同的,因为输入应该相对于for循环中调用的内容而改变
如果这令人困惑,我道歉,但我试图尽可能地简化它我的脚本所做的事情。让我知道我是否需要澄清任何事情答案 0 :(得分:2)
制作文件夹:
import os
os.mkdir(path[, mode])
如果你想创建一个目录,如
~/dinosaur/llama/nested/etc/
然后你应该使用os.makedirs(path[, mode])
,因为它构建了确保有效所需的所有嵌套路径
所以说你目前在~/tmp
>>> import os
>>> os.mkdir('llama')
>>> os.mkdir('me')
在该目录中创建文件夹。
但如果我们想要内部〜/ llama / me /但我们仍然在~/tmp~
怎么办?
然后你可以使用mkdir两次,或者你可以使用
>>> import os
>>> os.makedirs('/home/llama/me')
答案 1 :(得分:1)
如果我理解你的问题,你只想迭代values
并在特殊文件夹(文件)中输出找到的位置(某物)。所以稍微修改你的代码
import os, re
values = ['alpha','123']
BASE_PATH = '/Users/name/Desktop/'
OUTPUT_FILE_NAME = 'output.txt'
query_file = os.path.join(BASE_PATH, 'query.txt') # 'a\nb\nc\nd\n4\n5\n6\n'
def func(query_file, reading_files):
with open(query_file,'r') as f:
query = f.read().split('\n')
# TODO: check query
for fbase in reading_files:
in_file_name = os.path.join(BASE_PATH, '{}.txt'.format(fbase))
out_dir = os.path.join(BASE_PATH, fbase)
out_file_name = os.path.join(out_dir, OUTPUT_FILE_NAME)
# TODO: check if out_dir exists but is regular file
if not os.path.isdir(out_dir):
os.mkdir(out_dir)
with open(in_file_name, 'r') as in_file, open(out_file_name, 'w') as out_file:
reading = in_file.read()
for line in query:
m = re.search(line, reading)
if m is not None:
out_file.write("{}\n".format(str(m.start())))
print(func(query_file, values))
基本上,使用with
;)