У меня есть файл, который выглядит следующим образом:Python3 Как я использовать элемент из функции в другой функции
OG_100000: V_bacterium_v|198260291 O_bacterium_v|391222558 O_terrae_v|182414991
и я сделал эту функцию:
def readGroupFile(groupFileName):
dict_gene_taxonomy = {}
fh = open(groupFileName,"r")
for line in fh:
liste = line.split(": ")
groupName = liste[0]
genesAsString = liste[1]
dict_taxon = {}
liste_gene = genesAsString.split()
for item in liste_gene:
taxonomy_gene = item.split("|")
taxonomy = taxonomy_gene[0]
geneId = taxonomy_gene[1]
if taxonomy in dict_taxon:
listeCorrespondantATaxonomy = dict_taxon[taxonomy]
listeCorrespondantATaxonomy.append(geneId)
else:
dict_taxon[taxonomy] = []
dict_taxon[taxonomy].append(geneId)
dict_gene_taxonomy[groupName] = dict_taxon
fh.close()
return dict_gene_taxonomy
Я сделал эту функцию сделать словари и разделенный элемент в каждом словаре, чтобы иметь возможность достигать только элемента после трубы («|»), называемого genId.
Затем я создал функцию для создания почтового запроса в базе данных Интернета с этим генотипом. Я не собираюсь ссылку вся функция, потому что она работает должным образом, когда я вручную добавить geneId в строке функция в:
data = urllib.parse.urlencode(getPost("391222558"))
, учитывая тот факт, что «391222558» является одним geneId из группы файлов, но мне нужно заменить эти числа каждым «genId» в моей функции readGroupFile. я не могу написать:
data = urllib.parse.urlencode(getPost(geneId))
, потому что я звоню элемент в readGroupFile, который не определен вне этой функции. Итак, как я могу достичь всего «geneId» в моей функции readGroupFile, чтобы добавить этот параметр в getPost (...), чтобы он мог работать для каждого genId в моем групповом файле?
Спасибо за ваш ответ, я попробую это и посмотрю, работает ли оно. –
я сделал то, что вы предложили, и я получаю: глобальный geneId = taxonomy_gene [1] \t \t \t \t \t \t \t ^ SyntaxError: недопустимый синтаксис, то^точка на = –
и нужно написать только один раз в начало функции и каждый раз, когда вы используете ее, просто напишите genid с глобальным, но наверху вам нужно написать глобальную генерацию: code: global geneid def readGroupfile(): global geneid geneid = somthing некоторые, как он не устанавливает t он код как код, так что представьте, что каждое определение отличается от линии –