我正在尝试将模型估计的结果保存到文件中。我尝试了很多东西,但它不起作用,因为我显然没有正确地做到这一点。我甚至不确定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来获取我应该做的事情。有任何想法吗?
要生成自定义目录名称,可以使用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
您可以格式化包含文件名的字符串以根据需要包含变量。字符串格式(以一种方式)就像这样工作
"number_%d" % (5) == "number_5"
当你在字符串中使用python中的%
运算符时,它会将元组中的参数放在运算符的右边,并将它们放入字符串中。在这种情况下,%d
被int
取代。 %s
被str
取代,%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")
我认为你在寻找的是这样的:
file_name = os.path.join("folder_path", f"{variable}_vectors.txt")
你还需要:
import os
在您的文件的顶部。
我玩了一些,这有效!
#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)