2016-09-27 110 views
-1

我试图从JSON文件中提取一些值,但似乎没有工作。另外,当我尝试添加打印语句以查看它在哪里被炸毁时,什么也不打印。任何人都可以看到任何明显的原因,为什么这不起作用?我唯一能想到的是,它与我最近从PC切换到Mac并且文件存储为rtf而不是txt的事实有关。因为您创建和打开名为f_n在python脚本的目录中的空文件,然后尝试用json模块加载它从JSON文件中检索响应

import glob2 
import json 

fdr = glob2.glob('/Users/Lab-Justin/Desktop/CogStylesText/TextFiles/*.rtf') #insert all rtf files in folder into list 

for dr in fdr:  #loop through file list 
    print(dr) 
    ending = str(dr[57:])  #cut filename from pathname 
    pe = ending.replace('.rtf', '') #add filename to path 
    f_quest = '/Users/KraemerLab-Justin/Desktop/CogStylesText/CogStylesExcel/QuestEx/' + pe + '.csv'  #format the file as csv 
    f_n = '/Users/Lab-Justin/Desktop/CogStylesText/TextFiles/' + pe   #access rtf file 
    print(f_n) 

    file_path = 'f_n' 
    file_out = 'f_quest' 
    with open(file_path) as f_in, open(file_out) as f_out: 
     data = json.load(f_in) 
    print(data.keys()) # list the dicts keys 

    q = 'vviq' 
    response = data[q]['response'] 
    f_out.write('response') #write responses to new .csv file 
+0

其中sql是在这个? –

+1

我认为你的意思是“JSON”而不是“SQL”?这些是非常不同的东西 – roganjosh

+0

对,这些文件也存储在SQL服务器上。对此感到抱歉。 – DartmouthDude82

回答

1

你的代码输出什么。

这些变量分配给字符串文字,而不是您先前定义的变量。

file_path = 'f_n' 
file_out = 'f_quest' 

这些都是分配给路径系统

f_quest = '/Users/KraemerLab-Justin/Desktop/CogStylesText/CogStylesExcel/QuestEx/' + pe + '.csv'  #format the file as csv 
f_n = '/Users/Lab-Justin/Desktop/CogStylesText/TextFiles/' + pe   #access rtf file 

上我假设你是想打开后面的变量?如果是这样的话,那么前面的变量是完全没有意义的。你应该给这些变量open(),但不要引用变量名称。

此外,open()默认读取模式,所以你可能要解决这个问题,当你试图做f_out.write('response'),应根据with意,否则文件将被关闭,并再次'response'是文字的单词的串“响应”而不是response变量,你在前面的行中分配的

+0

非常感谢你cricket_007! – DartmouthDude82

+0

您可以通过接受帖子旁边复选标记的答案来显示您的感谢 –