Victor0321 发表于 2022-4-13 11:21:45

shell模式下 input多行字符

各位大神 问一个比较初级的问题。。。。


就是关于python里我想输入在shell里 input里 多行字符 应该怎么输啊,是直接enter 报错了。。。 \n 存入的文本默认为字符串输进去了(如图)

所以多行字符要input需要怎么弄啊 ,我看小甲鱼的这个多行直接换行就输入了 。。

python爱好者. 发表于 2022-4-13 11:46:33

重复 input 吧......

hrpzcf 发表于 2022-4-13 11:52:17

你在说什么,报错在哪里

Victor0321 发表于 2022-4-13 12:15:03

hrpzcf 发表于 2022-4-13 11:52
你在说什么,报错在哪里

文件内容
'''小客服:小甲鱼,今天有客户问你有没有女朋友?
小甲鱼:咦??
小客服:我跟她说你有女朋友了!
小甲鱼:。。。。。。
小客服:她让你分手后考虑下她!然后我说:"您要买个优盘,我就帮您留意下~"
小甲鱼:然后呢?
小客服:她买了两个,说发一个货就好~
小甲鱼:呃。。。。。。你真牛!
小客服:那是,谁让我是鱼C最可爱小客服嘛~
小甲鱼:下次有人想调戏你我不阻止~
小客服:滚!!!'''
Traceback (most recent call last):
File "C:\Users\zhuzj\Desktop\python\test\老教材\29.py", line 14, in <module>
    save_file(file_name = input('文件名'),file_content = input('文件内容') )
File "C:\Users\zhuzj\Desktop\python\test\老教材\29.py", line 4, in save_file
    f = open(file_name,file_type)
ValueError: Must have exactly one of create/read/write/append mode and at most one plus

DetConan 发表于 2022-4-13 13:28:47

结尾没输入:w, 里面会取最后一个冒号后面的内容当作文件打开的模式, 如'w'写入模式, 'r'读取模式

hrpzcf 发表于 2022-4-13 14:35:30

Victor0321 发表于 2022-4-13 12:15
文件内容
'''小客服:小甲鱼,今天有客户问你有没有女朋友?
小甲鱼:咦??


不管你是一行一行输入还是粘贴多行,file_content=input("文件内容:")读一行就结束了,file_type=file_content.split()[-1]是得不到正确的结果的。

Victor0321 发表于 2022-4-13 15:34:51

hrpzcf 发表于 2022-4-13 14:35
不管你是一行一行输入还是粘贴多行,file_content=input("文件内容:")读一行就结束了,file_type=file_c ...

emmm 对就是我想知道 shell模式下如何输入多行文字啊,因为我一按enter 就自动input就切完了

hrpzcf 发表于 2022-4-13 18:28:45

本帖最后由 hrpzcf 于 2022-4-13 18:33 编辑

Victor0321 发表于 2022-4-13 15:34
emmm 对就是我想知道 shell模式下如何输入多行文字啊,因为我一按enter 就自动input就切完了

既然input只读一行那就加个循环让它一直读
def save_file(file_name=input("文件名:")):
    ####### 方法一
    # with open(file_name, "w", encoding="utf-8") as f:
    #   content = []
    #   while True:
    #         line = input()
    #         if line.endswith(":w"):
    #             content.append(line[:-2])
    #             break
    #         else:
    #             content.append(line + "\n")
    #   f.writelines(content)

    ###### 方法二
    with open(file_name, "w", encoding="utf-8") as f:
      for line in iter(input, ":w"):
            if line.endswith(":w"):
                f.write(line[:-2])
                break
            f.write(line + "\n")

    ###### 其他方法略


if __name__ == "__main__":
    save_file()

Anonymous 发表于 2022-4-13 18:56:17

不知道
页: [1]
查看完整版本: shell模式下 input多行字符