python - 在 Python 中使用另一个类的函数和数据
问题描述
我是 Python 新手,这听起来很基础,但我有 2 个文件/类,task1.py 和 task2.py。我想在 task2.py 上访问 task1.py 函数和数据。换句话说,无论 task1.py 打印出什么,我都想使用该输出并使用它,在这种情况下,我正在使用该输出将其导出到 CSV 文件。
这就是我的 task1.py 的样子:
def matchCountry():
userName = raw_input("Enter user's name: ")
with open('listOfUsers.json') as f:
data = json.load(f)
def getId(name):
for userId, v in data.items():
if v['Name'][0].lower() == name:
return userId;
id = getId(userName)
for k, v in data.items():
if any(x in data[id]['Country'] for x in v['Country']):
if v['Name'][0].lower() != userName.lower():
result = (v['Name'][0] + " : " + ", ".join(v['Country']))
print result
这就是我的 task2.py 的样子:
def exportCSV():
with open('output.csv', 'w') as csvfile:
csvwriter = csv.writer(csvfile, f, lineterminator='\n')
csvwriter.writerow(["Name", "Country"])
for k, v in data.items():
if any(x in data[id]['Country'] for x in v['Country']):
if v['Name'][0].lower() != userName.lower():
csvwriter.writerow([v['Name'][0], ", ".join(v['Country'])])
我的 JSON 文件供参考:
{
"user1":{
"Country":[
"China",
"USA",
"Nepal"
],
"Name":[
"Lisbon"
]
},
"user2":{
"Country":[
"Sweden",
"China",
"USA"
],
"Name":[
"Jade"
]
},
"user3":{
"Country":[
"India",
"China",
"USA"
],
"Name":[
"John"
]
}
}
解决方案
首先,您指的是其他函数中不起作用的函数变量,例如数据和用户名。
如果您想使用另一个 python 文件中的函数/类,您可以导入它并调用它以获取有关导入的更多信息,请参见此线程,另请参见以下示例:
任务1.py
from task2 import exportCSV
userName = raw_input("Enter user's name: ")
def matchCountry():
with open('listOfUsers.json') as f:
data = json.load(f)
return data
def getId(name):
for userId, v in data.items():
if v['Name'][0].lower() == name:
return userId;
data = matchCountry()
id = getId(userName)
for k, v in data.items():
if any(x in data[id]['Country'] for x in v['Country']):
if v['Name'][0].lower() != userName.lower():
result = (v['Name'][0] + " : " + ", ".join(v['Country']))
print result
exportCSV(data, id, userName)
任务2.py:
def exportCSV(data, id, userName):
with open('output.csv', 'w') as csvfile:
csvwriter = csv.writer(csvfile, f, lineterminator='\n')
csvwriter.writerow(["Name", "Country"])
for k, v in data.items():
if any(x in data[id]['Country'] for x in v['Country']):
if v['Name'][0].lower() != userName.lower():
csvwriter.writerow([v['Name'][0], ", ".join(v['Country'])])
推荐阅读
- magento2 - 在 Magento 2.3.4 中单击编辑产品时出现 ComponentType 错误
- react-native - 到达导航结束后反应本机重置导航
- cordova - 在ionic的相机预览插件的stopRecordVideo()函数返回的文件路径上找不到视频
- mysql - 表字段中的 MySQL 查询参数
- python - 如何将日期时间对象转换为浮点数?AttributeError:“datetime.datetime”对象没有属性“datetime_to_float”
- flutter - Flutter 如何显示当前日期和接下来的 5 天日期?
- android - Android:多种屏幕尺寸的多种翻译
- php - OpenSSL 获取私钥和公钥函数返回 False
- javascript - CreateReactApp:在运行时嵌入最终用户插件
- postgresql - 在potgresql中获得拒绝关系的权限