How best to display the content of a text file in python - python-2.7

Ok, I am abit of a python beginner. So, forgive me if this question sounds silly.
I have a directory that contains some .txt files as shown in the image below:
The 1.txt file contains :
Lo! I am lost.
I want to write a programme that goes through each file in the shakespeare directory and print out the content of the .txt file. Below is a programme I have written but I am not sure how to print out the content of each file. all it prints is the name of each file but how do I really print out the content of each file.
def readFromCorpus(path):
os.chdir(path)
for fu in glob.glob("*.txt"):
print fu
readFromCorpus('./trainingData/shakespeare')
I am sorry if this is really a silly question. I just need a pointer to what I am doing wrong.
Thanks

Try this:
def readFromCorpus(path):
os.chdir(path)
for fu in glob.glob("*.txt"):
print('\n\n'+fu)
with open(fu,'r') as f:
data = f.readlines()
for line in data:
print(line.replace('\n',''))

Related

How to concatenate in Python from .txt?

I have a server.txt file where i have 3 names listed down:
server.txt
CFMPAPP1
CFMPAPP2
CFMPAPP3
i am looking to take these names by calling that server.txt file and want the output.txt file as mentioned below.
output.txt
CI_Name like 'CFMPAPP1%' or
CI_Name like 'CFMPAPP2%' or
CI_Name like 'CFMPAPP3%' or
Any Idea how to do this ?
This can be easily done in three lines:
with open('server.txt', 'r') as file:
s = "".join(file.read())
amended_string = "\n".join([ "CI_Name like '{}%' or".format(a) for a in s.split('\n')])
And then you just need to save amended_string to output.txt. I hope that helps.
This solution only keeps one line at a time in memory:
with open('server.txt', 'r') as infile:
with open('output.txt', 'w') as outfile:
for line in infile:
outfile.write("CI_Name like '{}%' or\n".format(line.rstrip()))

extracting data from tow different files to produce a fasta file

I have two different files one is a fasta file, and the other a txt file produced from a dictionary with json.
file_A looks like this;
> {
"gene_1005 ['gene description_B']":2,
"gene_1009 ['gene description_C']":1,
"gene_104 ['gene description_D']":2,
"gene_1046 ['gene description_A']":1,
}
file_B looks like this:
gene_1005 ['gen description_B'] ATGTGGATCCGCCCGTTGCAGGCGGAACTGAGCGATAACACGCTGGCTTTGTATGCGCCAAACCGTTTTGTGCTCGA
gene_2 ['gene description_C'] ATGAAATTTACCGTTGAACGTGAACATTTATTAAAACCGCTGCAACAGGTGAGTGGCCCATTAGGTGGCCGCCCAAC
what I would like to create is a new fasta file only containing those genes that have the value 2 in the file_A. I have tried the code below but I am quite lost. It will print the word[0], that is the name of the gene but it will not print word[1], that should be the number. It sends the error
'out of range'
import json
def readlines():
input_file=open('file_A.txt')
lines=input_file.readlines()
print lines[1]
for line in lines:
words=lines.split(':')
print words[0]
print words[1]
#print line
input_file.close()
readlines()
Could anyone kindly give a hand with this, please?
Thanks
I see people like giving negative without explaining why or giving an suggestion, and that was the suggestion of this post. But as I see that the negative-voter has not bother with a suggestion, I will post the answer to it.
input_file= open('file.fa', 'r')
output_file= open(wanted_genes.fa', 'w')
for line in input_file:
if line[0]=='>':
geneID=line[1:-1]
if geneID in my_dict:
output_file.write(line)
skip=0
else:
skip=1
else:
if not skip:
output_file.write(line)
input_file.close()
output_file.close()

TypeError: object of type 'file' has no len()

Hello I am a beginner at programming. I am reading Zed Shaw's book Learn Python the Hard Way and I encountered an error I found strange. I am wondering why it keeps giving me the error: TypeError: object of type 'file' has no len() after I run my code in Windows Powershell. The code I ran:
from sys import argv
from os.path import exists
script, from_file, to_file = argv
print "Copying from %s to %s" % (from_file, to_file)
in_file = open(from_file, "r")
print "The input file is %d bytes long" % len(in_file)
It says the error is in the last line. I do not understand why this error occurs because if I'm right I opened my file in read mode and saved it in the variable in_file. So why wouldn't it be able to read the len of in_file? In Zed Shaw's book he wrote
in_file = open(from_file)
indata = in_file.read()
in the place where I had written
in_file = open(from_file, "r")
with the comment: # we could do these two on one line, how?So I assumed he wanted me to write the code I had written.
Would appreciate if someone could help me out. Thanks in advance
he want you to do like this in_file = open(from_file).read()
in_file is reference to your opened file.
If you want to store content of your file and not reference of it, you can do as above.
file = open("/path/to/file.txt").read()
after this file will give you content of file and you can use file variable to get length of content like this
len(file), after you will get number of symbols in content of your file
I hope it was make sense for you.
NOTE
this is bad practice, you need to keep your files reference and do your actions with reference.

Python read and write in same function

My code is currently taking in a csv file and outputting to text file. The piece of code I have below and am having trouble with is from the csv I am searching for a keyword like issues and every row that has that word I want to output that to a text file. Currently, I have it printing to a JSON file but its all on one line like this
"something,something1,something2,something3,something4,something5,something6,something7\r\n""something,something1,something2,something3,something4,something5,something6,something7\r\n"
But i want it to print out like this:
"something,something1,something2,something3,something4,something5,something6,something7"
"something,something1,something2,something3,something4,something5,something6,something7"
Here is the code I have so far:
def search(self, filename):
with open(filename, 'rb') as searchfile, open("weekly_test.txt", 'w') as text_file:
for line in searchfile:
if 'PBI 43125' in line:
#print (line)
json.dump(line, text_file, sort_keys=True, indent = 4)
So again I just need a little guidance on how to get my json file to be formatted the way I want.
Just replace print line with print >>file, line
def search(self, filename):
with open('test.csv', 'r') as searchfile, open('weekly_test.txt', 'w') as search_results_file:
for line in searchfile:
if 'issue' in line:
print >>search_results_file, line
# At this point, both the files will be closed automatically

How to open and read from an external text file in odoo?

I want to open a .txt file using python in odoo and read its contents. Where should I place this .txt file for it to be opened.
What I tried,
I kept the file in the same directory as models.py and in models.py wrote the code to open the file,
try:
logFile = open('log.txt', 'r')
but this file is not opened. Please help, where should I keep log.txt for it to be located, or can I set any path for models.py to understand where log.txt is?
I just found the solution, I set the absolute path to where the .txt file is found.
import os
path = os.path.expanduser('<absolute path to .txt file>')
logFile = open(path, 'r')
this worked.
This is Python Code may be help you:
with open("log.txt") as file: # Use file to refer to the file object
data = file.read()
do something with data
print data
File handling in Python See this link : http://pymbook.readthedocs.org/en/latest/file.html