.dat文件并编写一个随机的ascii值并将其转换回其字符形式

时间:2017-03-05 08:47:06

标签: python string file

我正在尝试创建一个创建.txt或.dat文件的程序(取决于用户选择),然后在该文件中写入一个随机值,然后将其转换为另一个值。

所以如果给出一个随机字符,则应将其转换为相应的ASCII值,反之亦然。

目前这就是我所拥有的:

import random # import randomdeals with random generation
import string # import string contains sequences of common ASCII characters

userInput = input("Which file would you like to open either a .txt file or a .dat file?") # let the user decide which file type they want to open

def randomCharacter(): 
    return random.choice(string.ascii_letters)
def randomASCII():
    return random.randint(97,122)

if userInput == (".txt"):
    with open("characterConversion.txt", "w") as textFile:
        textFile.write(randomCharacter())
        textFile.close()
    textFile = open("characterConversion.txt", "r+")
    character = textFile.readline(1)
    textFile.write("\n converted into its ASCII value is \n") #/n means a new line
    textFile.write(str(ord(character)))
    textFile.close()
if userInput == (".dat"):
    with open("asciiConversion.dat", "w") as datFile:
        datFile.write(str(randomASCII()))
        datFile.close()
    datFile = open("asciiConversion.dat", "r+")
    ascii = int(datFile.readline(1))
    character = chr(randomASCII())
    datFile.write(str(ascii))
    datFile.write("\n in its character form is \n")
    datFile.write(character)
    datFile.close()

我的.txt部分程序非常有用,感谢之前帮助我修复它的用户,但我现在遇到了我的.dat文件问题。输入我的输入为.dat并打开文件后,它显示: 1061  它的性格形式是 一个

然而,数字(在这种情况下是1061)应该只在97到122之间,所以我不知道我哪里出错了。如果我没有清楚地解释我的问题,我会道歉

4 个答案:

答案 0 :(得分:1)

执行str(randomCharacter)您将名为randomCharacter的函数转换为字符串,但您不会将其调用。

在Python中,即使没有任何参数可以传递,也必须加上括号,或者它具有不同的含义。

即使你调用它,你也会再次返回函数引用而不是结果(看起来像使用VB扭曲你的python代码)。

def randomCharacter():
    return random.choice(string.ascii_letters)

然后使用with上下文块来确保文件已关闭/刷新:

if userInput == ".txt":
    with open("characterConversion.txt", "w") as textFile:
        textFile.write(randomCharacter())

答案 1 :(得分:0)

您需要在写完后关闭打开的文件

textFile.write(str(randomCharacter()))
textFile.close()

答案 2 :(得分:0)

您不是在randomCharacter函数中保存您刚刚创建的随机字符。除此之外,您将返回函数本身,而不是此随机创建的字符。

这样可行:

userInput = input("Which file would you like to open either a .txt file or a .dat file? ")

def randomCharacter():
    random_character = random.choice(string.ascii_letters)
    return random_character

if userInput == ".txt":
    with open("characterConversion.txt", "w") as f:
        f.write(randomCharacter())

此外,您不需要在此处使用str函数,因为randomCharacter返回的值已经是字符串。

答案 3 :(得分:0)

我需要做的是删除第二个datFile.write,因为我正在编写2个不同的ASCII值,因为程序正在交替转换哪个值