使用json创建路径并在其中添加文件?

时间:2016-02-19 10:54:00

标签: python python-2.7 path mkdir

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这样的文件。它正在创建它的文件夹。 谁能告诉我这是什么错误?

1 个答案:

答案 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)

上面的代码将首先创建目录路径,然后创建该文件(如果该文件不存在)或者它将打开已存在的文件。

我希望有所帮助。