lidongchao / BeancountSample

29 stars 7 forks source link

【求助】bean-extract自动生成的文件为空? #2

Open YakshaChien opened 5 years ago

YakshaChien commented 5 years ago

大佬好,我是基于你Blog里面的文件结构修改使用的Beancount,在Win系统下,使用的Anaconda环境安装的Beancount。 在配置文件my.config中,我没能理解下面这段话:

_debit_account = {Debit_or_credit.DEBIT: "Expenses:Daily:Food"}

为何支出账户信息的定义与日常饮食对等? 并修改成了:

_debit_account = {}

但其实不论是修改这条与否,通过bean-extract+my.config自动生成的.beancount文件,都是一个空文件,生成的内容如下:

;; -*- mode: beancount -*-

也就是一个空的文件头,实在是费解问题出在哪?求指点解惑。

另:# _credit_account负责保存收入账户信息,为何是信用卡这种负债账户负责保存收入?我的收入一般走借记卡,是否需做修改?感谢!

lidongchao commented 5 years ago

实在是不好意思,今天才来回复你。你遇到的这个问题我努力复现了,你的python版本应该是3.4吧,我写这个脚本的时候依赖的是2.7的版本(抱歉没在文档里说明)。python2很快就要淘汰了,我努力抽空升级这个脚本,早点适应3.4。

YakshaChien commented 5 years ago

我最关键的这个忘了说了,我的是 Python 3.7.3 的 ̄□ ̄|| 每天上来刷一遍果然有用哈哈哈,感谢大佬!!! 那我是不是可以先用v2.7的版本?

_debit_account = {Debit_or_credit.DEBIT: "Expenses:Daily:Food"} 为何支出账户信息的定义与日常饮食对等? # _credit_account 负责保存收入账户信息,为何是信用卡这种负债账户负责保存收入?

把全网能找的中文 Beancount 的文章都看了一遍,发现只有你提到用支付宝的解决方法,以及在配置文件中有自定义 Categorizer 来实现自动化。

啃完 「Getting Started with Beancount」 后,实在还是没能理解上文引用里提及的两处疑惑...囧

再次感谢。

lidongchao commented 5 years ago

2.7版本是可以的。

第一个问题,这句话可以理解为默认的支出账户信息,如果交易对方和商品名称中出现了某些关键词,那么该笔交易就会划分到对应的支出账户中,否则就填充默认的支出账户信息。因为我看过自己的账单,默认为吃的(Expenses:Daily:Food)改动的内容最少。如果有自己的数据特征,可以改为其他值。

第二个问题,我猜你是不是把credit这个词认作信用卡了?这里debit和credit是借和贷的字面意思,具体的含义就自己再琢磨啦。其实这句话和上个问题的那句话是一样的,代表默认的收入账户信息,可以改为自己需要的值。我这里填写的默认值是基金(Income:MoneyFund),因为支付宝里主要的收入其实就是这些,至于工资转入,我的理解只是从银行卡到支付宝的一笔资金转移罢了。但是像你这样简单理解为一笔收入,忽略掉银行卡的这部分流水,其实也没有问题,方法有很多,只要最后保证恒等式没有被破坏,都是可行的。

说到收入这个场景,我的做法是自己手工维护一个beancount文件,里面记录了没有经过支付宝和微信的流水,其中主要就包含工资收入,现金支出之类的。

如果发现有什么问题,欢迎一起探讨学习,我也只是学了点皮毛而已。

YakshaChien commented 5 years ago

感谢大佬相当详尽的答疑解惑,基本理解这两处定义式的含义了。 后面关于收入那块的做法,我也很受启发。 我先找一个v2.7版本的实践一下。 感谢!!!

manofphysics commented 4 years ago

我遇到了@YakshaChien 类似的问题,当我在Windows 10 系统中执行程序时,返回的只有 ;; -*- mode: beancount -*- 我的环境是 Python 3.7.9 (tags/v3.7.9:13c94747c7, Aug 17 2020, 18:58:18) [MSC v.1900 64 bit (AMD64)] on win32

但是相同的代码在Ubuntu上实现并没有问题,能正常输出内容。这是什么原因?