string形式のファイル名の作成

8 vues (au cours des 30 derniers jours)
Koji
Koji le 3 Juil 2022
Commenté : Hernia Baby le 4 Juil 2022
csv形式のファイルからデータをインポートして、処理した上でcsvファイルと同じファイル名のxlsxファイルの作成を考えております。
file = "C:\asdf.csv";
[filepath,name,ext] = fileparts(file)
としてcsvのファイル名をstring形式で取り込み
処理したデータTを
writetable(T,name.xlsx)
とすればできるのではないか考えたのですができませんでした。
良い方法があれば教えていただけないでしょうか?
  4 commentaires
Koji
Koji le 3 Juil 2022
ありがとうございます。
writetable(T,'name.xlsx')
これも試しましたが、name.xlxsができてしまい、
求めているasdf,xlsxはできませんでした。
最終的なファイルはcsv形式でもいいのですが、データ処理後のファイル名に元々のファイル名asdfを反映できればと考えております。
Atsushi Ueno
Atsushi Ueno le 3 Juil 2022
そういう事でしたか。それならこれでファイル名の拡張子だけ変更して保存する事が出来ます
file = "C:\asdf.csv";
[filepath,name,ext] = fileparts(file)
writetable(T,[filepath,name,'.xlsx']);

Connectez-vous pour commenter.

Réponse acceptée

Hernia Baby
Hernia Baby le 4 Juil 2022
エラー: writetable (line 152)
FILENAME は空でない文字ベクトルまたは string スカラーでなければなりません。
---------------------------------------------------
これはcatが配列の結合だからです。
string配列でなく、スカラーにするにはappendを使用してください。
file = "C:\asdf.csv";
[filepath,name,ext] = fileparts(file)
filepath = ""
name = "C:\asdf"
ext = ".csv"
以下がcatでの連結です
[filepath,name,'.xlsx']
ans = 1×3 string array
"" "C:\asdf" ".xlsx"
以下がappendでの連結です
filepath + name + '.xlsx'
ans = "C:\asdf.xlsx"
※関係ないですがMATLAB Answers上ではfilepartsがCドライブがないためか、filepathが空になるんですね。
  2 commentaires
Atsushi Ueno
Atsushi Ueno le 4 Juil 2022
system('cat /proc/version');
Linux version 5.4.185-0504185-generic (kernel@gloin) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04)) #202203160950 SMP Wed Mar 16 14:00:16 UTC 2022
厳密に言うとCドライブが無い事が原因ではなく、Linuxプラットフォームではfileparts関数がファイルパスの区切り文字としてスラッシュ(/)しか受け付けない事が原因ですね。Windowsプラットフォームではスラッシュ(/)もバックスラッシュ(\)も使えるので、fileparts関数は両方とも使えると勘違いしていました。
% On Microsoft Windows systems, you can use either forward (/) or back (\) slashes
% as path delimiters, even within the same path. On Unix and Macintosh systems, use
% only / as a delimiter.
Hernia Baby
Hernia Baby le 4 Juil 2022
なるほどLinux環境が原因だったんですね…!勉強になるなあ…

Connectez-vous pour commenter.

Plus de réponses (2)

Koji
Koji le 3 Juil 2022
ありがとうございます。
file = "C:\asdf.csv";
[filepath,name,ext] = fileparts(file)
writetable(T,[filepath,name,'.xlsx']);
上記で試したところ
file、filepath、nameはstring形式でワークスペースには現れていますが
エラー: writetable (line 152)
FILENAME は空でない文字ベクトルまたは string スカラーでなければなりません。
となってしまいました。

Koji
Koji le 4 Juil 2022
お二方ご助言ありがとうございました。
str1=append(name,'.xlsx');
writetable(T,str1);
お陰様で上記で、求めたいた元々のファイル名を使ったxlsxファイルを作成することができました。
  1 commentaire
Atsushi Ueno
Atsushi Ueno le 4 Juil 2022
おっとこれはすいません。間違えてstring型に文字ベクトルをくっつけてしまいました。

Connectez-vous pour commenter.

Catégories

En savoir plus sur Text Data Preparation dans Help Center et File Exchange

Produits


Version

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!