вывод результатов Python в текстовый файл - PullRequest
0 голосов
/ 23 июня 2019

Я пытаюсь распечатать результаты моей программы в файл с именем пользователя.Моя программа создает файл, но не записывает в файл.Мой код работает так, как я хочу, просто проблемы с печатью.Мне нужна произвольная строка файла для печати в файл, названный пользователем интерфейса.

from random import randrange
from random import choice


def randomShape():
    x = randrange (0,400)
    y = randrange (0,400)
    x2 = randrange(0,400)
    y2 = randrange(0,400)

    radius = randrange (0,100)
    red = randrange (192, 208)
    blue = randrange(100,140)
    green = randrange(150,175)
    shape = ['cirle;','rectangle;']
    randomShape = choice (shape)

    if randomShape == 'cirle;':
        print(randomShape,x,",",y,";",radius,";",red,",",blue,",",green)

    elif randomShape != 'cirle;':
        print(randomShape,x,",",y,";",x2,",",y2,";",red,",",blue,",",green)


def getColor( colorString ):
    tokens = colorString.split(',')
    if len( tokens ) == 3:
        return color_rgb( int( tokens[0] ), int(tokens[1]), int( tokens[2] ))
    elif len( colorString ) > 0:
       return colorString.strip()
    else:
        return 'white'



def main():
    kFile = input("Enter the drawing file name to create:")
    openfile = open(kFile,"w")

    q = int(input("Enter the number of shapes to make:"))

    for x in range(q):
        print (randomShape(),kFile)



main()

Ответы [ 3 ]

0 голосов
/ 23 июня 2019
print (randomShape(),kFile)

Это не собирается записывать в файл. После того, как вы откроете файл с:

openfile = open(kFile,"w")

Теперь у вас есть дескриптор файла в openFile. Вы можете использовать эти методы для записи данных (и убедитесь, что вы тоже закрыли файл). Вообще говоря, вы можете использовать метод записи - https://docs.python.org/3/library/io.html#io.TextIOBase.write

Так что в вашем случае вы хотели бы использовать что-то вроде kFile.write(randomShape())

Также в качестве sidenote ваша функция randomShape() также не возвращает никаких данных для вызова функции. Поэтому вам, вероятно, потребуется изменить это, чтобы использовать return вместо print в:

print(randomShape,x,",",y,";",radius,";",red,",",blue,",",green) и print(randomShape,x,",",y,";",x2,",",y2,";",red,",",blue,",",green)

0 голосов
/ 23 июня 2019

В общем случае рекомендуется использовать оператор with.Как отметил Марк Мейер, вам также нужно писать в объект файла, а не в строку с его именем.
Объединяя обе информации, попробуйте что-то вроде:

filename = input("Filename: ")
with open(filename, "w") as openedFile:
    print("Some data", file=openedFile)
0 голосов
/ 23 июня 2019

Вы можете попробовать это:

from random import randrange
from random import choice
from graphics import color_rgb

def randomShape():
    x = randrange (0,400)
    y = randrange (0,400)
    x2 = randrange(0,400)
    y2 = randrange(0,400)

    radius = randrange (0,100)
    red = randrange (192, 208)
    blue = randrange(100,140)
    green = randrange(150,175)
    shape = ['cirle;','rectangle;']
    randomShape = choice(shape)

    if randomShape == 'cirle;':
        print(randomShape,x,",",y,";",radius,";",red,",",blue,",",green)

    elif randomShape != 'cirle;':
        print(randomShape,x,",",y,";",x2,",",y2,";",red,",",blue,",",green)
    return randomShape


def getColor( colorString ):
    tokens = colorString.split(',')
    if len( tokens ) == 3:
        return color_rgb( int( tokens[0] ), int(tokens[1]), int( tokens[2] ))
    elif len( colorString ) > 0:
       return colorString.strip()
    else:
        return 'white'

def main():
    kFile = input("Enter the drawing file name to create:")
    q = int(input("Enter the number of shapes to make:"))

    with open(kFile, "w") as file:
        for x in range(q):
            file.write(randomShape())

main()

В приведенном выше коде вы должны вернуть значение randomShape из randomShape() и записать вывод в файл. И еще одна вещь, на которую следует обратить внимание, это то, что вы должны рассмотреть возможность использования режима добавления, например open(kFile, "a"), чтобы продолжать добавлять к существующему файлу и не перезаписывать его при каждом запуске функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...