質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1169閲覧

【Python】visual Basic Code でpathlib.Pathのパスが通らない

shin_notch

総合スコア5

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/04/18 08:30

ある参考書を見ながらpythonの勉強をしております。
開発環境としては、
visual Basic codeとpython3.8.2です。

ファイル操作のプログラムを作成しており、
ソースコード内で
『import pathlib』でライブラリをインポートし、
該当フォルダを『path = pathlib.Path("..\data\sales")』として取得しています。

このプログラムを実行すると、下のようなエラーで表示されました。
よく見てみると、パスの中身が勝手に、『'..\data\sales'』と変わっているようです。

パスが変わったため、該当フォルダにたどり着けずエラーが発生したと思うのですが、
このような現象の解決策があればご教授いただけますでしょうか。
(ちなみに、同じファイルをwindowsのコマンドプロンプトから実行したときは問題なく出力できましたので、ソースコード自体に問題はないと思われます。)

ご回答よろしくお願いします。

エラーメッセージ

FileNotFoundError: [WinError 3] 指定されたパスが見つかりません。: '..\data\sales'

###ソースコード

import pathlib # 標準ライブラリ ファイルやフォルダーのパスを扱いやすくするため import openpyxl # 外部ライブラリ pip install openpyxl  import csv # 標準ライブラリ lwb = openpyxl.Workbook() #売上一覧表ワークブック 新規ワークブックの作成 lsh = lwb.active #売上一覧表ワークシート アクティブにする list_row = 1#何行目に新規の売上明細を書き込むかを示す変数 追記できるようになる path = pathlib.Path("..\data\sales") for pass_obj in path.iterdir(): if pass_obj.match("*.xlsx"):#フォルダの中ファイルがExcelファイルなら wb = openpyxl.load_workbook(pass_obj)#ワークブックを読み込む for sh in wb:# ワークブックの中のワークシートの処理を実行する for dt_row in range(9,19):#1列ずつ順番にデータを見ていく range(開始値,終了値) if sh.cell(dt_row, 2).value != None: #より説明的なコード #lsh.cell(row=list_row, column=1).value = \ # sh.cell(row=2, column=7).value #伝票NO lsh.cell(list_row, 1).value = sh.cell(2, 7).value #伝票NO lsh.cell(list_row, 2).value = sh.cell(3, 7).value #日付 lsh.cell(list_row, 3).value = sh.cell(4, 3).value #得意先コード lsh.cell(list_row, 4).value = sh.cell(7, 8).value #担当者コード lsh.cell(list_row, 5).value = sh.cell(dt_row, 1).value #No lsh.cell(list_row, 6).value = sh.cell(dt_row, 2).value #商品コード lsh.cell(list_row, 7).value = sh.cell(dt_row, 3).value #商品名 lsh.cell(list_row, 8).value = sh.cell(dt_row, 4).value #数量 lsh.cell(list_row, 9).value = sh.cell(dt_row, 5).value #単価 lsh.cell(list_row, 10).value = sh.cell(dt_row, 4).value * \ sh.cell(dt_row, 5).value #金額 lsh.cell(list_row, 11).value = sh.cell(dt_row, 7).value #備考 list_row += 1 #行数を更新 #lwb.save("..\data\sales\salesList.xlsx") with open("..\data\sales\salesList.csv","w",encoding="utf_8_sig") as fp: writer = csv.writer(fp, lineterminator="\n") for row in lsh.rows: writer.writerow([col.value for col in row])

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

path = pathlib.Path("..\data\sales")

この記述は間違ってます
あなたのいうvisual Basic codeなるものがなんかよろしくやってくれてるのでしょうけど、そこらへんきちんと修正してみてはどうでしょうか

Pythonでバックスラッシュを使ってエスケープする方法 | TechAcademyマガジン

投稿2020/04/18 08:54

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shin_notch

2020/04/18 09:12

言い忘れていましたが、このソースコードは参考書に記載されていたものです。サンプルコードがネットにあり、それをダウンロードして学習につかうというものです。(その参考書自体がVisual Basic Codeによる開発を勧めていました。) ちなみに記述に間違いがあるようですが、どこが間違っているか、どうすれば正しいのか教えていただけますでしょうか。よろしくお願いします。
y_waiwai

2020/04/18 09:14

文字列中でバックスラッシュを記述する場合は、\と2つ書かないとダメです まあ、raw文字列にするというテもありますが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問