host = "html.com"
LNG = ENG, GED
input_folder = os.path.dirname(os.path.abspath(__file__))
output_folder = os.path.join(input_folder, 'output')
def get_filename(ext, base, sub_folder):
filename = '{}.{}'.format(base, ext)
return os.path.join(output_folder, sub_folder, filename)
subfolder = LNG + '\\' + host
ref_filename = get_filename('pcm', output_filename + '_ref', subfolder)
if not os.path.exists(ref_filename):
os.makedirs(ref_filename)
with open(ref_filename, 'wb') as f_pcm:
f_pcm.write(payload)
cur_filename = get_filename('pcm', output_filename, subfolder)
with open(cur_filename, 'wb') as f_pcm:
f_pcm.write(payload)
我正在尝试检查路径是否存在,如果它不存在则创建一个。我正在创建输出文件夹然后像语言文件夹 ENG和GED。我正在创建另一个文件夹作为html.com。后来我将json和pcm文件等文件添加到其中。 在上面的代码中(我没有添加所有内容)。除了最后一步,一切都正常。
它不会添加像_ref.pcm这样的文件。它正在创建它的文件夹。 谁能告诉我这是什么错误?
答案 0 :(得分:0)
os.makedirs()将始终创建一个目录。这就是它的意图,这是预期的行为。当您给它提供文件名时,它会将其视为目录名称,并将其创建。将您的代码更改为以下内容:
def get_filename(ext, base, folder):
filename = '{}.{}'.format(base, ext)
return os.path.join( folder, filename)
output_folder = os.path.join( input_folder, 'output' )
subfolder = LNG + '\\' + host
output_folder = os.path.join( output_folder, subfolder )
if not os.path.exists(output_folder):
os.makedirs(output_folder);
# do note that output_filename is not defined anywhere
ref_filename = get_filename('pcm', output_filename + '_ref', output_folder)
with open(ref_filename, 'ab') as f_pcm:
f_pcm.write(payload)
上面的代码将首先创建目录路径,然后创建该文件(如果该文件不存在)或者它将打开已存在的文件。
我希望有所帮助。