使用os.path编写带有变量名的输出文件

问题描述 投票:1回答:4

我正在尝试将模型估计的结果保存到文件中。我尝试了很多东西,但它不起作用,因为我显然没有正确地做到这一点。我甚至不确定os.path.join是来自os.path的正确命令:

#output the vectors for winsize=5 and features=10
study1_path = os.path.join("/Users/dlhoffman/Study 1/")
print(study1_path)

/Users/dlhoffman/Study 1/

ifttt_model.wv.save_word2vec_format("study1_path/vectors.txt", binary=False, total_vec=None)

由于我必须多次估计这个模型,并且我想保存一些强力打字,我还想用超参数winsize和features来标记每个输出文件。

我想说的文件名,winsize = 5和features = 10是:

 /Users/dlhoffman/Study 1/5w10fvectors.txt

所以在上面的例子中,“5”和“10”来自变量winsize和features的值。我已经研究了示例和os.path模块文档,但是不知道足够的python来获取我应该做的事情。有任何想法吗?

python filenames os.path
4个回答
3
投票

要生成自定义目录名称,可以使用format strings轻松完成。例如:

>>> wf = [(1,3), (2,4), (5,10), (2,90)]
>>> for w,f in wf:
...     print '/Users/Study 1/{}w{}fvectors.txt'.format(w, f)
...
/Users/Study 1/1w3fvectors.txt
/Users/Study 1/2w4fvectors.txt
/Users/Study 1/5w10fvectors.txt
/Users/Study 1/2w90fvectors.txt

2
投票

您可以格式化包含文件名的字符串以根据需要包含变量。字符串格式(以一种方式)就像这样工作

"number_%d" % (5) == "number_5"

当你在字符串中使用python中的%运算符时,它会将元组中的参数放在运算符的右边,并将它们放入字符串中。在这种情况下,%dint取代。 %sstr取代,%f被浮子取代。 %r被被序列化的对象的__str__()方法所取代。

以下示例

base_path = "/Users/dlhoffman/Study 1/"
filename_template = "%dw%dfvectors.txt"
for winsize, features in [(5, 10), (10, 20), (15, 25)]:
    filename = filename_template % (winsize, features)
    print filename
    # prints  "5w10fvectors.txt"
    # prints  "10w20fvectors.txt"
    # prints  "15w25fvectors.txt"
    fullpath = os.path.join(base_path, filename)
    with open(fullpath) as fh:
        fh.write("some data")

1
投票

我认为你在寻找的是这样的:

file_name = os.path.join("folder_path", f"{variable}_vectors.txt")

你还需要:

import os

在您的文件的顶部。


0
投票

我玩了一些,这有效!

#final step - write the results of this cell to a csv
#file contains word, word count, v1-vn

path=r'/Users/dlhoffman/Study 1/'
filename_template="%dw%df_words-vectors.csv"
filename=filename_template % (winsize, features)
vectors.to_csv(os.path.join(path, filename), index=False)
© www.soinside.com 2019 - 2024. All rights reserved.