鱼C论坛

 找回密码
 立即注册
查看: 1968|回复: 8

[已解决]shell模式下 input多行字符

[复制链接]
发表于 2022-4-13 11:21:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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


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

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

最佳答案
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()
捕获.JPG
214002l8mwwcb52f9f5q9f.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-13 11:46:33 | 显示全部楼层
重复 input 吧......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-13 11:52:17 From FishC Mobile | 显示全部楼层
你在说什么,报错在哪里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-13 13:28:47 | 显示全部楼层
结尾没输入:w, 里面会取最后一个冒号后面的内容当作文件打开的模式, 如'w'写入模式, 'r'读取模式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-13 14:35:30 | 显示全部楼层
Victor0321 发表于 2022-4-13 12:15
文件内容
'''小客服:小甲鱼,今天有客户问你有没有女朋友?
小甲鱼:咦??

不管你是一行一行输入还是粘贴多行,file_content=input("文件内容:")读一行就结束了,file_type=file_content.split()[-1]是得不到正确的结果的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-13 15:34:51 | 显示全部楼层
hrpzcf 发表于 2022-4-13 14:35
不管你是一行一行输入还是粘贴多行,file_content=input("文件内容:")读一行就结束了,file_type=file_c ...

emmm 对就是我想知道 shell模式下如何输入多行文字啊,因为我一按enter 就自动input就切完了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

匿名鱼油
匿名鱼油  发表于 2022-4-13 18:56:17
不知道
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-11 18:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表