Python Forum
Python output into .txt or .csv file - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Python output into .txt or .csv file (/thread-11600.html)



Python output into .txt or .csv file - stanthaman42 - Jul-17-2018

My current Code is below. I am attempting to take my outputs from this code and place it into a .txt or .csv file.
When I run this, I am getting the error "write() argument must be str, not int" -- does anyone have any suggestions on what I need to fix to make this work? have been struggling with it for a few days but cant seem to figure out the issue. Thank you in advance for your help!

def getAllCombinations(s, length):
    if length == 0:
        return ['']
    else:
        ret = []
        for idx, c in enumerate(s):
            combos = getAllCombinations(s[0:idx] + s[idx+1:], length - 1)
            for i in range(len(combos)):
                combos[i] = c + combos[i]
            ret += combos
        return ret
 
def getPermutations(s, ret, swapIdx = 0):
    if swapIdx == len(s):
        ret.append(int(''.join(s)))
 
    for i in range(swapIdx, len(s)):
        cpy = [c for c in s]
        cpy[swapIdx], cpy[i] = cpy[i], cpy[swapIdx]
        getPermutations(cpy, ret, swapIdx + 1)
 
def getAllPermutations(i):
    s = str(i)
    allPerms = set()
    for i in range(len(s)):
        curCombos = getAllCombinations(s, i + 1)
        for combo in curCombos:
            ret = []
            getPermutations(combo, ret)
            allPerms = allPerms.union(set(ret))
    return list(allPerms)
 
def isPrime(n):
    if n==2 or n==3: return True
    if n%2==0 or n<2: return False
    for i in range(3,int(n**0.5)+1,2):   # only odd numbers
        if n%i==0:
            return False    
    return True

def getNumPrimes(i):
    perms = getAllPermutations(i)
    numprimes = 0
    for perm in perms:
        if (isPrime(perm)):
            numprimes += 1
    return numprimes
 
 
def find_maxPrimes():
    max = 0
    maxNum = 0
    for i in range (1000, 10000):
        cur = getNumPrimes(i)
        if (max < cur):
            max = cur
            maxNum = i
    return maxNum

#print(find_maxPrimes())

def find_maxPrimes2():
#    max = 0
#    maxNum = 0
#Printing here directly
    for i in range (1000, 10000):
        print (i, " ---> ", getNumPrimes(i))       
#print(find_maxPrimes2())

fh = open("numperms","a")
fh.write(find_maxPrimes())
fh.write(find_maxPrimes2())
fh.close()



RE: Python output into .txt or .csv file - ichabod801 - Jul-17-2018

Well, find_maxPrimes returns an int. You need to convert that to a str before you can write it to a file, like the error says. You can do this with the str() built-in function.


RE: Python output into .txt or .csv file - stanthaman42 - Jul-17-2018

(Jul-17-2018, 04:46 PM)ichabod801 Wrote: Well, find_maxPrimes returns an int. You need to convert that to a str before you can write it to a file, like the error says. You can do this with the str() built-in function.

Thank you for your help! How do I do that without changing a lot of the code that I already have?
I have tried to insert the str function but I guess I am placing it in the wrong line??
looking for some guidance on where to insert the str function. I have been trying to figure this out for a few days...


RE: Python output into .txt or .csv file - ichabod801 - Jul-17-2018

fh.write(str(find_maxPrimes()))