write to file

Sharan Basappa sharan.basappa at gmail.com
Sun May 6 12:28:16 EDT 2018


On Sunday, 6 May 2018 10:48:12 UTC+5:30, Chris Angelico  wrote:
> On Sun, May 6, 2018 at 3:10 PM, Sharan Basappa <sharan.basappa at gmail.com> wrote:
> > On Saturday, 5 May 2018 21:47:33 UTC+5:30, Steven D'Aprano  wrote:
> >> On Sat, 05 May 2018 08:45:39 -0700, Sharan Basappa wrote:
> >>
> >> > Thanks a lot. I have actually tried print with file handle as a
> >> > parameter (the last option). I see that the file is created but nothing
> >> > is logged.
> >>
> >> That could be a file buffer issue. Nothing will actually be written to
> >> the disk until either the buffer is full, or you close the file. Try
> >> calling fh.flush() from time to time, or use:
> >>
> >>     print(msg, file=fh, flush=True)
> >>
> >>
> >> although things may be different on Windows. (For example, you may not be
> >> able to open the file while it is still open in Python.)
> >>
> >>
> >>
> >> --
> >> Steve
> >
> > Steve,
> >
> > I agree that flushing could be an issue but I assume when the program closes, buffered data should be  flushed even if I am explicitly flushing. This I did not see happening. Probably, I have to spend some additional time.
> > --
> 
> Can you post a complete (but preferably small) example of a program
> that creates a file but doesn't properly write to it?
> 
> ChrisA

Thanks, Everyone. I was probably making some mistake.
I re-checked again and added file handle to the prints.
Everything works fine.

Below is the code ...

# Imports
from matplotlib import pyplot as plt
from sklearn.datasets import load_iris
import numpy as np
import pickle

fh = open("ML_PY_2.log","w+")
        
# load the data with load_iris from sklearn
data = load_iris()
features = data['data']
feature_names = data['feature_names']
target = data['target']
target_names = data['target_names']
labels = target_names[target]
plength = features[:,2]

# use numpy operations to get setosa features
is_setosa = (labels == 'setosa')
# this the important step
max_setosa = plength[is_setosa].max()
min_non_setosa = plength[~is_setosa].min()

print("data\n",data,file=fh)
print("target\n",target, file=fh)
print("target_names\n",target_names,file=fh)
print("labels\n",labels,file=fh)
print("is_setosa\n",is_setosa,file=fh)
print("plength\n",plength,file=fh)

print('maximum of setosa: {0}.'.format(max_setosa))
print('minimum of others: {0}.'.format(min_non_setosa))

fh.close()



More information about the Python-list mailing list