У меня есть файл, который может содержать другой файл. Мне нужно открыть файл include и определить расширение файла для определенного файла (demo.spx). Например: ИмяРекурсивный поиск расширения файла в файле
Файл: sample.txt
* SetUp Time Simulation
*****************************************************
*Options
.options nomod
*+ autostop=0
*+ rmax=2
*+ absv=1E-6
*+ relv=1E-3
*+ trtol=0.1
*+ lvltim=3
*+ dvdt=2
*+ relvar=0.2
*+ absvar=0.2
*+ ft=0.2
*+ relmos=0.01
*+ method=TRAP
*+ notop=0
+ post=1
+ runlvl=5 rmax=25
+ ingold=2
+ CO=132
+ MEASFORM = 3
.WIDTH OUT=132
.include './test.sp'
Файл: test.sp
*****************************************************
* Circuit definition
.include **'demo.spx'**
.param vdd=0.99
.param vss=0
.temp=-40C
*Supplies
.global VDD VSS VBP VBN
Vdd VDD 0 vdd
Vss VSS 0 vss
Vbp VBP 0 vdd
Vbn VBN 0 0
Vsi SI 0 0
Vse SE 0 0
Я написал следующий код, но он выглядит, как я делаю некоторые ошибка. Поэтому сначала я проверил, что я отформатировал if в первый файл и нашел, что return. Если у меня нет, то я заглядываю в файл, который включен, и попробуйте изучить второй файл. Нам нужно рекурсивный поиск до двух раз. Вторая версия кода
Я изменил код еще раз и в состоянии определить расширение файла на первого уровня Но второго уровня я не в состоянии определить расширение файла , который не вернуть мне None. комментарий Обзора также приветствует, если я могу улучшить мой код
#!/usr/bin/env py
import os
import sys
def parse_file_extension(gold_deck, found, count):
extention_list = [ "lvs", "cir", "spx"]
if(count == 2 or found == True):
return
with open(gold_deck, 'r+') as fspi:
while 1:
data = fspi.readline()
if not data:
break
if data.startswith('.include'):
data = data.split()
print data
netlist_file_extension = data[1].split(".")[-1].rstrip("'")
print netlist_file_extension
if netlist_file_extension in extention_list:
netlist_file = os.path.basename(data[1]).strip("'")
count = count + 1
found = True
print "First include"
print count
return netlist_file
else:
gold_deck = os.path.basename(data[1]).rstrip("'")
print gold_deck
parse_file_extension(gold_deck, found, count)
def main(argv):
gold_deck = "sample.txt"
netlist_file = parse_file_extension(gold_deck, False, 0)
print netlist_file **//None Expecting demo.spx**
if __name__ == "__main__":
sys.exit(main(sys.argv))
Вы должны обновить исходный вопрос с помощью этого кода или задать другой вопрос. Как правило, вы не должны пытаться задавать последующие вопросы, «отвечая» на свой вопрос. – martineau