【问题标题】:.dat files and writing a random ascii value and converting that back into its character form.dat 文件并写入随机 ascii 值并将其转换回其字符形式
【发布时间】:2017-03-05 08:47:06
【问题描述】:

我正在尝试创建一个程序来创建 .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 之间,所以我不知道我哪里出错了。如果我没有清楚地解释我的问题,我深表歉意

【问题讨论】:

    标签: python string file


    【解决方案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())
    

    【讨论】:

      【解决方案2】:

      你需要在写入后关闭打开的文件

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

      【讨论】:

      • 天哪,我不敢相信我忘了这样做,但是当我在关闭文件后打开文件时,文件只是说:
      • 您缺少函数调用()
      【解决方案3】:

      您不会将刚刚在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的返回值已经是一个字符串。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-09-10
          • 2015-07-06
          • 1970-01-01
          • 1970-01-01
          • 2010-12-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多