我是python脚本的新手。我想创建一个可以打开文本文件c_name.txt的脚本,其中文本文件的内容将是单元名称列表。打开后,我需要将所有单元格名称分配为变量。这是因为我需要单元名称来打开需要该单元名称的下一个目录。我现在要做的是打开文本文件并打印单元格名称。我不知道如何读取单元格名称并分配给变量。我是否需要将所有单元格名称分配到一个数组中?
我还需要对单元格名称是否以ce_开头进行分类,然后报告文件将位于ce_目录中,而如果单元格名称以cell开头,则报告文件将位于单元格目录中。
这是我的c_name.txt:
ce_clk
celladd
ce_sum
cellsub
这是更新的代码:
#!/usr/bin/python
import os
import os.path
myPWD = os.getcwd()
# Implement functions get_test_directory and get_library_directory
# to retrieve correct directory paths
def get_test_directory( str ):
return str
def get_library_directory (str ):
os.chdir('..')
str = os.getcwd()
return str
test_directory = get_test_directory(myPWD)
library_directory = get_library_directory(myPWD)
cell_names_file = os.path.join(test_directory, "c_name.txt")
with open(cell_names_file, "r+") as f1:
cell_names = f1.readlines()
for cell_name in cell_names:
cell_directory = "ce_" if cell_name.startswith("ce_") else "cell"
floc2 = os.path.join(library_directory, cell_directory, "{0}.rpt".format(cell_name))
with open(floc2, "r+") as f2:
for line in f2:
print line
新编辑: 我对line startswith还有另一个问题,那就是使它更通用而不是像下面这样使用硬编码:
for cell_name in cell_names:
cell_directory = "ce_" if cell_name.startswith("ce_") else "cell"
floc2 = os.path.join(library_directory, cell_directory,{0}.rpt".format(cell_name))
现在我使用的是“ ce_”和“ cell”,是否有可能让脚本要求先读取cell_name的前三个字符,即“ ce_”和“ cel”,而不是自己定义。我尝试使用此行,但由于显示错误而似乎不起作用:
cell_directory = cell_name.startswith(cell_name,0,5)
错误:
AttributeError: 'bool' object has no attribute 'startswith'
答案 0 :(得分:0)
在您当前的示例中,将值存储到列表中就足够了。稍后,当您需要这些值时,请遍历列表,并逐个获取每个单元格名称。
#!/usr/bin/python
import os
import os.path
myPWD = os.getcwd()
# Implement functions get_test_directory and get_library_directory
# to retrieve correct directory paths
test_directory = get_test_directory(myPWD)
library_directory = get_library_directory(myPWD)
cell_names_file = os.path.join(test_directory, "c_name.txt")
with open(cell_names_file, "r+") as f1:
cell_names = [line.strip() for line in f1]
for cell_name in cell_names:
cell_directory = "ce_" if cell_name.startswith("ce_") else "cell"
floc2 = os.path.join(library_directory, cell_directory, "{0}.rpt".format(cell_name))
编辑:代码已更新,以说明问题中的新信息。没有有关目录结构的确切信息,所以我使用的是虚拟占位符。