0

Hi guys, I am fairly new to python. The problem I am having is manipulating the data that I read from a file. Example: if a line of the file is Monday = 0800, is it possible to break up that line so I can read Monday and 0800 separately and do whatever manipulation to that specific text.

The other problem I am having is if I read a line from a file ex: foo and I want to test if the readline() method has read that line ex:

f = open('file.txt')
line = f.readline()
while(True):
   if line == 'foo':
       print 'read line foo'

When i attempt the code above python reads the line foo but it doesn't execute the print statement. There could be something that is very easy that I am missing. Any help is appreciated! Thanks!

3
Contributors
10
Replies
11
Views
5 Years
Discussion Span
Last Post by woooee
Featured Replies
  • 1

    Why not use standard [URL="http://docs.python.org/library/configparser.html"]ConfigParser[/URL] module? Read More

0

basic framework for this kind of thing is normally something like

sep = '='
with open('myfile.txt') as filein:
    for line in filein:
        record = line.strip().split(sep)
        #process records fields
0

basic framework for this kind of thing is normally something like

sep = '='
with open('myfile.txt') as filein:
    for line in filein:
        record = line.strip().split(sep)
        #process records fields

Thanks for the reply! I tried out your code and it removes the '='. Now my question is how can I test record in an if statement. Ex:

if record == 'Mon' or '0800':
    print 'Monday at 0800'

When I test that if statement it was true for all records in the file. Is record a string or a different data type. When record prints out it prints . I hope you understand my question. Thanks again!

0

Thanks for the reply! I tried out your code and it removes the '='. Now my question is how can I test record in an if statement. Ex:

if record == 'Mon' or '0800':
    print 'Monday at 0800'

When I test that if statement it was true for all records in the file. Is record a string or a different data type. When record prints out it prints . I hope you understand my question. Thanks again!

I figured out that problem. I wasn't able to edit it again in the allotted 30mins to edit it.

Now I want to test record against a condition in an if statement. Here is my code:

sep = '='
with open(r'myfile.txt') as filein:
    for line in filein:
        record = line.strip().split(sep)
        y = record.pop()
        print y

Since record is a list data type I want to make it str so i can test it in an if statement against another str. When I print out record without popping it: . After I pop it from the list y only prints out '0800'. Why does it not print out 'Mon'? Thanks again!

0

pop removes by default last value in list. Other values stay in list like stack (append as push operation).

0

pop removes by default last value in list. Other values stay in list like stack (append as push operation).

This is what I'm trying to do:

with open(r'myfile.txt') as filein:    
    for line in filein:        
        record = line.strip().split(sep)
        t = record.pop()
        if t == '[Backup Schedule]':
            #now retrieve next item in list without looping again
            #something like record.next()
            #then I would do another if statement like
            #if record.next() == 'Monday':
                #backupStart()

Should I use a queue instead?

Edited by Ares08: n/a

0

Can not answer every tiny piece without big picture of the contents of the file. Your test is basically same as

if line.endswith('=[Backup Schedule]\n') or line == '[Backup Schedule]\n':

Edited by pyTony: n/a

0

Can not answer every tiny piece without big picture of the contents of the file. Your test is basically same as

if line.endswith('=[Backup Schedule]\n') or line == '[Backup Schedule]\n':

I have a txt file that has backup parameters: ex:

backup schedule
mon = 0800
tue = n/a
..etc..
backup source dir
path
backup destination dir
path

then my backup program will interpret this appropriately

Thanks for your help.

0

Why not use standard ConfigParser module?

Didn't know about that module. Thanks a lot.

Can you take a look at my code that I'm working on and give me your input?

Edited by Ares08: n/a

0

#now retrieve next item in list without looping again
#something like record.next()

Use readlines, which reads the file into a list.

f_data = open('file.txt').readlines()
while ctr in range(5):     ## first 5 only
    print "this_rec", f_data[ctr]
    if ctr > 0:
        print "previous_rec",  f_data[ctr-1]
    print "next_rec", f_data[ctr+1]
    print "-"*50

There are many examples of readlines() use on the web so anything further is not necessary here.

Edited by woooee: n/a

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.