如何将当前变量值传递给python函数?

时间:2016-12-13 11:40:49

标签: python excel function variables openpyxl

我有一个项目,我希望用户在Excel工作表中指定输入参数,然后使用openpyxl将其读入类中的多个函数。我的问题是,每当我更改工作表中的值时,我必须再次运行脚本以使更改生效。由于我想以交互方式使用脚本并快速显示不同的值,因此需要花费很多时间。

是否有另一种方法可以将已更改的变量从工作表中传递到函数中?

这是我的代码:

class input:
    def __init__(self, vals=None):
        self.vals = vals
        self.wb = load_workbook("input.xlsx", data_only = True)
        self.ws = self.wb.get_active_sheet()

    def get_var(self):
        self.var = self.ws["B3"].value
        return self.var
        wb.save()
input.input()

在从Excel工作表中获取值之前,我将另一个模块中的参数导入到主模块中。我在那里遇到了同样的问题但是认为这是由import命令引起的。我看了重装模块,但似乎没有解决问题。然后我介绍了我认为会做的功能,但没有成功。

对此有任何帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:0)

您的代码的问题是您在保存任何内容之前返回,并且您没有正确使用save命令。下面我提供了一些示例代码,它将接受输入,修改特定单元格,然后保存文件。无需重新加载。我还修改了一些变量/函数名称,因为import openpyxl as op class excel: def __init__(self, vals=None): self.vals = vals self.wb = op.load_workbook("sample.xlsx", data_only=True) self.ws = self.wb.active def set_var(self, num): self.ws["A1"].value = num self.wb.save('sample.xlsx') print(self.ws["A1"].value) excel_file = excel() while True: a = input() excel_file.set_var(a) 是一个内置函数,不应该用于类名。这只是为了向您展示如何使保存正常工作,因为我不知道您实际想要代码做什么。

library(rvest)
library(magrittr)

links <- c("http://www.mothercare.com/christmas/gifts-for-babies/?q=christmas%27", 
           "http://www.mothercare.com/christmas/christmas-clothing/?q=christmas%27")

Data <- lapply(links, function(x){

  h <- read_html(x)
  items <- h %>% html_nodes(".m-title_link") %>% html_text %>% gsub("\\n", "", .)
  price <- h %>% html_nodes(".m-sales_price") %>% html_text %>% gsub("\\n", "", .)
  urls <- h %>% html_nodes(".m-title_link") %>% xml_attr("href") %>% 
          paste0("http://www.mothercare.com", .)
  data.frame(Name=items, Price=price, Link=x, Urls=urls)

})

Data <- do.call(rbind, Data)

View(Data)