帮帮我,我有一个data.txt文件。我想读取该文件112652447744
中的特定数据,它是目录C中的自由空间数据。
这是我的data.txt文件的内容:
Caption FreeSpace Size
C: 112652447744 146776518656
D: 295803727872 299962986496
E:
Z:
答案 0 :(得分:1)
您可以读取每一行(忽略第一行)并用空格分隔以获取每一列。这样您就可以为每个分区提取大小和可用空间:
contents = # here go the file contents
# split the text file into lines and ignore the first line
lines = contents.splitlines()[1:]
part_data = {}
for line in lines:
columns = line.split() # split the lines along the white space characters
if len(columns) != 3:
continue # incomplete lines
part_data[columns[0]] = (columns[1], columns[2])
这将为字典中的每个分区提供可用空间和大小。为了得到你的实际结果,它将是:
part_data['C:'][0]
如果您只想要第二列和第二行,忽略驱动器号,则可以将其减少到以下位置:
contents = # here go the file contents
second_line = contents.splitlines()[1]
second_column = second_line.split()[1]
你去了,但这需要它始终格式相同。如果第二行没有三列,则它实际上不起作用并且最有可能导致IndexError
。
请注意a_string.split()
会自动删除所有空格,而a_string.split(' ')
也会返回其中的空格。
答案 1 :(得分:1)
试试这个:
#Open file in lines
file = open('path/to/txt','r').readlines()
#For each line
for disk in file:
fields = disk.split("\t")
#To check the total fields...
if(len(fields)>1):
print fields[1]
答案 2 :(得分:1)
你的问题并没有这么说,但是我可以假设你想在Caption为C的行中“查找”代表FreeSpace的值:?
除非您需要文件中的数据用于其他内容,否则只需逐行读取文件,直到获得结果为止。第一行将是您的标题行,您可以使用'caption_header'和'fs_header'的位置来解析每个后续数据行。
在您的示例中,这意味着我们要测试每行的第一个值是否包含C:,如果是,我们要查找的答案将在第二列中。如果我们找到答案,则无需搜索其余行。
def find_value(caption_header, fs_header, caption_value, fp):
fs = None
with open(fp) as fid:
headers = fid.readline().strip().split()
for i, h in enumerate(headers):
if h == caption_header:
caption_position = i
if h == fs_header:
fs_position = i
line = fid.readline()
while line != '':
values = line.strip().split()
if values[caption_position] == caption_value:
fs = values[fs_position]
break
return fs
然后像这样使用它:
fs = find_value('Caption', 'FreeSpace', 'C:')