[Tutor] Still not understanding passing filenames in Python
DL Neil
PyTutor at danceswithmice.info
Sat Jun 6 22:19:09 EDT 2020
On 7/06/20 1:47 PM, boB Stepp wrote:
> Now in "3.4 Modules" at
> https://dabeaz-course.github.io/practical-python/Notes/03_Program_organization/04_Modules.html
>
>
> Earlier in the course I wrote a program, report.py, that runs as so:
>
> bob at Dream-Machine1:~/practical-python/Work$ python3 report.py
>
> Enter path to portfolio file: Data/portfolio.csv
> Enter path to stock prices file: Data/prices.csv
>
> Name Shares Price Change ---------- ----------
> ---------- ---------- AA 100 $9.22 -22.98
> IBM 50 $106.28 15.18
> CAT 150 $35.46 -47.98
> MSFT 200 $20.89 -30.34
> GE 95 $13.48 -26.89
> MSFT 50 $20.89 -44.21
> IBM 100 $106.28 35.84
>
> Current portfolio value = $28,686.10
> Current portfolio gain/loss = $-15,985.05
>
> In "Exercise 3.12: Using your library module" Beazley has us importing the
> recently discussed fileparse module containing the parse_csv() function to
> replace the code previously written in the read_portfolio() function in
> report.py. So I added "import fileparse" and modified the read_portfolio()
> function to:
>
> def read_portfolio(filename: str) -> List[Dict[str, Union[str, int,
> float]]]:
> """Read a file and return a portfolio list of records."""
> portfolio = fileparse.parse_csv(
> filename, select=["name", "shares", "price"], types=[str, int,
> float]
> )
> return portfolio
>
> report.py and fileparse.py are both in the same Work directory. Data is a
> subdirectory of Work.
>
> But when I try to run this program with the same file location entries
> I get:
>
> bob at Dream-Machine1:~/practical-python/Work$ python3 report.py
>
> Enter path to portfolio file: Data/porfolio.csv
> Enter path to stock prices file: Data/prices.csv
> Traceback (most recent call last):
> File "report.py", line 113, in <module>
> main()
> File "report.py", line 104, in main
> portfolio = read_portfolio(portfolio_path)
> File "report.py", line 18, in read_portfolio
> filename, select=["name", "shares", "price"], types=[str, int, float]
> File "/home/bob/practical-python/Work/fileparse.py", line 25, in
> parse_csv
> with open(filename) as fileobj:
> FileNotFoundError: [Errno 2] No such file or directory: 'Data/porfolio.csv'
>
> If I use absolute file paths, "/home/bob/practical-python..." it works.
>
> If I use "./Data/portfolio.csv" and "./Data/prices.csv" it works. I
> currently do not understand the differences. Obviously I do understand one
> or more things. A helpful explanation please? Thanks!
Please don't shoot the piano player (or the Latin teacher)...
is the fileNM correct?
> bob at Dream-Machine1:~/practical-python/Work$ python3 report.py
>
> Enter path to portfolio file: Data/portfolio.csv
...
> bob at Dream-Machine1:~/practical-python/Work$ python3 report.py
>
> Enter path to portfolio file: Data/porfolio.csv
--
Regards =dn
More information about the Tutor
mailing list