鱼C论坛

 找回密码
 立即注册
查看: 1568|回复: 8

[已解决]python if __name__ == "__main__": 问题

[复制链接]
发表于 2018-5-24 20:52:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-

  3. import sys
  4. from collections import OrderedDict
  5. args=sys.argv
  6. family_barcode_dict = OrderedDict()
  7. family_fastq_dict = OrderedDict()
  8. #创建一个字典对应barcode和sampleID
  9. def makedict(barcode_sample):
  10.     with open(barcode_sample) as f:
  11.         for line in f:
  12.             sampleID=f.split("\t")[0]
  13.             barcode=f.split("\t")[1]
  14.             if barcode not in family_barcode_dict:#这里检索的是key有没有在字典里面
  15.                 family_barcode_dict[barcode]=sampleID #sampleID当做value

  16. #运行完一个megapool以后,需要把dict这个字典里面的信息清零,然后再运行下一个megapool
  17. #将不同样本的信息传入到不同的list里面
  18. def divide_sample_fastq(index,r1,r2):
  19.     with open(index,"r") as f1, open(r1,"r") as f2, open(r2,"r") as f3:
  20.         while True: #因为这三个文件的格式是fastq,四行一个单位,所以一次读取四行进行处理
  21.             index_line_1=f1.readline().strip("\n")
  22.             if not (index_line_1):
  23.                 break
  24.             r1_line_1=f2.readline().strip("\n")
  25.             r2_line_1=f3.readline().strip("\n")
  26.             index_line_2=f1.readline().strip("\n")
  27.             r1_line_2=f2.readline().strip("\n")
  28.             r2_line_2=f3.readline().strip("\n")
  29.             index_line_3=f1.readline().strip("\n")
  30.             r1_line_3=f2.readline().strip("\n")
  31.             r2_line_3=f3.readline().strip("\n")
  32.             index_line_4=f1.readline().strip("\n")
  33.             r1_line_4=f2.readline().strip("\n")
  34.             r2_line_4=f3.readline().strip("\n")
  35.             ID=family_barcode_dict[index_line_2]#这里ID是sampelID
  36.             r1_new_line_1=ID+":"+r1_line_1
  37.             r2_new_line_1=ID+":"+r2_line_1
  38.             if ID not in family_fastq_dict:
  39.                 family_fastq_dict[ID]=[] #把相同sample的样本放在一个字典下面的同一个列表里面
  40.             family_fastq_dict[ID].append(r1_new_line_1)
  41.             family_fastq_dict[ID].append(r1_line_2)
  42.             family_fastq_dict[ID].append(r1_line_3)
  43.             family_fastq_dict[ID].append(r1_line_4)
  44.             family_fastq_dict[ID].append(r2_new_line_1)
  45.             family_fastq_dict[ID].append(r2_line_2)
  46.             family_fastq_dict[ID].append(r2_line_3)
  47.             family_fastq_dict[ID].append(r2_line_4)


  48. def main(barcode_sample,index,r1,r2): #这里要求的是形式参数
  49.     makedict(barcode_sample)
  50.     divide_sample_fastq(index,r1,r2)
  51.     for i in family_fastq_dict:
  52.         filename=i+".fq"
  53.         with open(filename,"w") as f:
  54.             f.write("\n".join(family_fastq_dict[ID])

  55. if __name__ == "__main__":
  56.     main(args[1],args[2],args1[3],args[4])

复制代码


请问我运行上面的代码出现如下问题,是怎么回事。我python 不是太精通,还有能帮看看代码还有其他问题吗?谢谢
    if __name__ == "__main__":
                             ^
SyntaxError: invalid syntax
最佳答案
2018-5-25 09:33:14
你的 f.write("\n".join(family_fastq_dict[ID])這裏少個右括號
f.write("\n".join(family_fastq_dict[ID]))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-25 08:58:02 | 显示全部楼层
我复制你的这段代码,并没有语法错误
  1. if __name__ == "__main__":
  2.     print('Ok')
复制代码

结果:
  1. Ok
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-25 09:23:52 | 显示全部楼层
BngThea 发表于 2018-5-25 08:58
我复制你的这段代码,并没有语法错误

结果:

为什么会出现下面的错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-25 09:25:49 | 显示全部楼层
BngThea 发表于 2018-5-25 08:58
我复制你的这段代码,并没有语法错误

结果:

我用pycharm运行的,输入四个参数,以空格分开。分别对应args[1],args[2],args1[3],args[4]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-25 09:32:17 | 显示全部楼层
错误提示是 if 这里语法错误

你说的下面的错误是指什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-25 09:33:14 | 显示全部楼层    本楼为最佳答案   
你的 f.write("\n".join(family_fastq_dict[ID])這裏少個右括號
f.write("\n".join(family_fastq_dict[ID]))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-25 09:41:24 | 显示全部楼层
BngThea 发表于 2018-5-25 09:32
错误提示是 if 这里语法错误

你说的下面的错误是指什么

我运行了一下,还是if 出现错误。我把这句话复制到自带的IDLE里面运行也没问题。不知道吃pycharm原因吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-25 09:56:06 | 显示全部楼层
likuo 发表于 2018-5-25 09:41
我运行了一下,还是if 出现错误。我把这句话复制到自带的IDLE里面运行也没问题。不知道吃pycharm原因吗?

6楼正解,上面的58行右边少了一个括号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-25 12:12:00 | 显示全部楼层
machinism 发表于 2018-5-25 09:33
你的 f.write("\n".join(family_fastq_dict)這裏少個右括號
f.write("\n".join(family_fastq_dict))

谢谢,自己写的bug不好找了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 02:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表