Chaquopy读取Android项目python目录下的文件

Chaquopy在AS里初始化之后,main文件夹下会出现一个python文件夹,如下所示:
在这里插入图片描述
然后我在python文件夹下创建了一个hello.py文件,并且在python文件夹下放置了一个CSV文件。
一开始读取方式为:

import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import association_rules
from mlxtend.frequent_patterns import apriori
from os.path import dirname, join

def finals():
    df = pd.read_csv("df_politics.csv" encoding='utf8', dtype=str)
    df_arr = df.values.tolist()

结果报错如下:

Caused by: com.chaquo.python.PyException: FileNotFoundError: [Errno 2] File b'df_politics.csv' does not exist: b'df_politics.csv'
        at <python>.pandas._libs.parsers.TextReader._setup_parser_source(parsers.pyx:689)
        at <python>.pandas._libs.parsers.TextReader.__cinit__(parsers.pyx:382)
        at <python>.pandas.io.parsers.__init__(parsers.py:1917)
        at <python>.pandas.io.parsers._make_engine(parsers.py:1135)
        at <python>.pandas.io.parsers.__init__(parsers.py:895)
        at <python>.pandas.io.parsers._read(parsers.py:457)
        at <python>.pandas.io.parsers.parser_f(parsers.py:685)
        at <python>.hello.finals(hello.py:10)

可以明显看到是FileNotFoundError错误。
改正如下:

import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import association_rules
from mlxtend.frequent_patterns import apriori
from os.path import dirname, join

def finals():
    filename = join(dirname(__file__), "df_politics.csv")
    print(filename)
    df = pd.read_csv(filename, encoding='utf8', dtype=str)
    df_arr = df.values.tolist()

其中文件名为:

filename = join(dirname(__file__), "df_politics.csv")

输出一下filename:

/data/user/0/com.example.pythontest/files/chaquopy/AssetFinder/app/df_politics.csv

查Chaquopy官方文档:
在Chaquopy 6.3.0和更高版本中,您可以使用相对于__file__的路径访问数据文件。例如,如果数据文件与Python文件位于同一目录中:

from os.path import dirname, join
filename = join(dirname(__file__), "df_politics.csv")

如果数据文件和Python文件位于不同的目录中,请相应地更改相对路径。例如,如果Python文件为:

src/main/python/alpha/hello.py

数据文件为:

src/main/python/bravo/df_politics.csv

则替换df_politics.csv为:

../bravo/df_politics.csv

猜你喜欢

转载自blog.csdn.net/Cyril_KI/article/details/112686144
今日推荐