在Android平板电脑

时间:2015-06-27 14:57:49

标签: android qpython

我是学习编码和从Python 2.7开始的新手。如何在Qpython 3中打开文本文件?

# Opening a file

inp = raw_input ("Enter a File Name: ")

#Optional guardian to capture incorrect filenames
try:

fhand = open('words.txt')
except:
    print "Invalid Filename "
    exit()
#End of Guardian code

count = 0
for line in fhand:
    count = count + 1
print "Line Count", count

我从中得到的只是错误消息。

3 个答案:

答案 0 :(得分:1)

错误消息IOError: [Errno 2] No such file or directory: 'words.txt'表示Python无法在找到文件的地方找到words.txt 文件。

Python在哪里寻找文件?

如果传递给open()的字符串看起来像绝对路径,那么Python就会在那里看。 'words.txt'看起来不像绝对路径,因此它被视为相对路径。 相对于什么?除了您可能期望的,相对于您的python源文件,但相对于当前工作目录

如果从交互式shell调用脚本,您可能知道适用的当前工作目录。在使用Qpython进行开发时,我不知道是否有人能够/确实做过这样的人。但如果没有,请不要担心。

import os
print os.getcwd()

output the current working directory's path,它可以帮助您确定文件的放置位置或访问方式。

缩进在python

中很重要

输出实际异常消息有利于调试。但是因为你有一个除了块,它可能不是你想要的。如果你想要"无效的文件名"要输出,你必须修复try块的缩进。 (fhand = open('words.txt')必须相对于try:缩进。)

我实际上有点意外,并没有收到IndentationError: expected an indented block的消息。

正确的异常处理

只捕捉你能做(和做)正确处理的事情

请注意,一旦try块被修复(参见上面的部分),except块将捕获其中的每个例外,即使它不是IOError: [Errno 2] No such file or directory。这意味着您输出"无效的文件名"即使在open中存在完全不同的问题,例如耗尽RAM以进行分配。

因此,请尝试捕捉您将在except块中处理的特定错误。

使用stderr获取错误消息

使用

print >> sys.stderr, "Invalid Filename "

can print to the standard error stream而不是标准输出流。如果您的脚本的标准输出被重定向到文件,这将非常有用。

使用用户输入

您目前正在使用硬编码文件名,并且在提示Enter a File Name:时,用户输入的名称不执行任何操作。我想,一旦你完成了调试,你将用imp替换硬编码的文件名,这里保存用户输入。请注意,通过替换它,您将不仅允许用户指定文件名,而且还允许您的脚本随后访问的文件路径(绝对或相对于当前工作目录)。这可能是您想要允许的,也可能不是。

答案 1 :(得分:0)

qpython的路径没有问题。 斜杠“/”可以通过“es file browser”找到并在生根后进行更改和写入。 我使用“os.system('sh')”来进入andrio sonsole .type“python **。py”我可以工作,当然,你应该将**。py放入Divice并更改其权限(通常是pretermit) )

Es下载:http://www.estrongs.com/?lang=en

使用follow来改变路径:(在python控制台中输入)

os.chdir(“****”)

****应该是/ storage / emulated / 0 / py这样的。你应该逐个输入,否则它不起作用,你知道我的意思。  我做到了。

新:::当重新启动控制台时,它会回到“/”.. T_T

答案 2 :(得分:-1)

我认为qpython在这里有问题,我一直试图弄明白自己,但可能是一个未解决的qpython问题

print(os.getcwd()) only prints a single slash '/' for me so I have had to resolve to putting the full path in

rdir = "/mnt/sdcard/com.hipipal.qpyplus/projects3/fileio/ "
with open(rdir+"test.txt", "wt") as out_file:
    out_file.write("This text is going to _____________the out file\n look at it and see")

你可以这样读写。