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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

263閲覧

pythonでPathの設定で

studyocarina

総合スコア1

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/03/09 06:39

編集2022/03/09 06:40

pythonのプログラムを改良しています。---
元々、ファイルを直接していして

path1=Path(r'F:\tmp\test1') 

だとうまくいくのですが、

ファイルの場所が毎回変わるので、外部ファイルから呼び出して
dirnameという文字列に 'F:\tmp\test1' を入れて
path2=Path(diranem)
とすると、そのようなファイルがないというエラーが出ます。

/tのエスケープシーケンスをどうしたらわからず、教えていただけると助かります。

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

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

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

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

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

guest

回答2

0

ベストアンサー

Path() は pathlib.Path() のことで、from pathlib import Path を実行していると想定して話を進めます。

from pathlib import Path dirname = 'F:\tmp\test1' path2 = Path(dirname)

'\t' がエスケープシーケンスとして解釈されるのは下記の例だと2行目の文字列を記述している部分なので、下記のように r を付けてraw文字列とします。

from pathlib import Path dirname = r'F:\tmp\test1' path2 = Path(dirname)

質問のように、外部ファイルから文字列を読んで処理するような場合だと、通常はエスケープシーケンスの変換は生じません。全体のコードはどうなっているのでしょうか。

投稿2022/03/09 07:09

chirimen

総合スコア189

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

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

studyocarina

2022/03/10 00:55

ありがとうございました。デバッカーでdiraemを確認すると path1は問題なく、path2については\tの部分が赤文字で記されていました。 バックスラッシュを普通のスラッシュにしてみたら、動きました。まだまだ初心者なので(teratailの使いかたも)、今回はこれでOKにしてしまいます。
guest

0

diranemがどういうナカミになってるのか確認してみては。
きちんとパス名が入ってるのであればそれでいけるはずです

投稿2022/03/09 07:10

y_waiwai

総合スコア87774

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

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

studyocarina

2022/03/10 00:53

ありがとうございました。デバッカーでdiraemを確認すると \tの部分が赤文字で記されていました。 バックスラッシュ(なぜか今日はyenマークになってしまう)を普通のスラッシュにしてみたら、動きました。まだまだ初心者なので(teratailの使いかたも)、今回はこれでOKにしてしまいます。
y_waiwai

2022/03/10 02:10

円マークとバックスラッシュは別の文字です Macなんかだとバックスラッシュ入力するには一工夫必要だったりしますね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問