問題タブ [file-traversal]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JavaのようなPythonのファイルトラバーサル関数を探しています
JavaではFile.listFiles()
、ディレクトリ内のすべてのファイルを実行および受信できます。その後、ディレクトリツリーを簡単に繰り返すことができます。
Pythonでこれを行う類似の方法はありますか?
python - Pythonでディレクトリツリーをトラバースするかなり高速な方法は?
指定されたディレクトリ ツリーが妥当なサイズであると仮定すると、たとえば Twisted や Python のようなオープン ソース プロジェクトの場合、そのディレクトリ内のすべてのファイル/ディレクトリの絶対パスをトラバースして反復する最速の方法は何ですか?
Python内からこれを行いたいです。os.path.walkは遅いです。そこで、 ls -lRとtree -fiを試しました。約 8337 個のファイル (tmp、pyc、test、.svn ファイルを含む) を含むプロジェクトの場合:
tree
よりも高速に見えますls -lR
(ただし、ls -R
よりも高速ですがtree
、完全なパスは提供されません)。find
最速です。
誰もがより高速かつ/またはより良いアプローチを考えることができますか? Windows では、必要に応じて 32 ビット バイナリの tree.exe または ls.exe を出荷するだけです。
更新 1 : 追加find
更新 2 : なぜこれをしたいのですか? ... cd、pushd などのスマートな代替品を作成しようとしています。パス (less、more、cat、vim、tail) を渡すことに依存する他のコマンドのラッパー コマンド。プログラムは時折ファイル トラバーサルを使用してこれを行います (たとえば、「cd sr grai pat lxml」と入力すると、自動的に「cd src/pypm/grail/patches/lxml」に変換されます)。この CD の交換に、たとえば 0.5 秒かかったとしたら、私は満足できません。http://github.com/srid/pfを参照してください
c - c で ftw() を適切に使用する
私のコードには次のものがあります:(cでのコーディング)
argv[2] はローカル ディレクトリ パスです。例えば。argv[2] = "TestCases" .o ファイルと同じディレクトリに testcases フォルダーがあります。
私の理解では、これはディレクトリ TestCases をトラバースし、見つかったすべてのファイルを関数 parseFile に送信する必要があります。
実際に何が起こるかというと、引数を関数 parseFile に送信するだけで、それだけです。私は何を間違っていますか?これを適切に使用するにはどうすればよいですか?
編集: これは parseFile です:
argv[2] に TestCases/big.txt を入力すると機能しますが、TestCases を入力すると機能しません
java - Java のファイル ツリー システムを使用して、サブディレクトリではなくファイルとフォルダーのみを取得する
したがって、Java ファイル ツリー システムを使用する必要があります。.listfiles ファイルは、何らかの理由でリモート ネットワークを通過するのが非常に遅いからです。ただし、すべての Java ファイル ツリー システムの例では、サブディレクトリ内のすべてのファイルが一覧表示されるため、プログラムが大幅に遅くなります。ディレクトリのみを検索し、サブディレクトリではなくそのディレクトリ内のみのフォルダーとファイルの名前を返すようにするにはどうすればよいですか。
サンプルコード:
洞察や助けをいただければ幸いです。
c# - ThreadPool.QueueUserWorkItem の終了後にメソッドを呼び出す
私はc#で書かれたコンソールアプリケーションに取り組んでいます
このアプリの目的は、すべてのドライブとファイルを調べて、それらに対して何かを行うことです。しかし、単一のスレッドですべてのファイルを処理するのは時間のかかるプロセスであり、私の目標ではありません。
だから私はThreadPool
それを次のように処理するために使用することにしました:
問題はConsole.WriteLine("Job is done.")
、すべてのスレッドが完了する前に実行されることです。いくつかの質問と回答を読みましたが、どれも私の問題に対処していません。
ThreadPool
ジョブのすべてのスレッドが終了した後にメソッドを呼び出すにはどうすればよいですか?
注:ご存知かもしれませんが、いくつのファイルが存在するかわからないため、スレッドがいくつ作成されるかわかりません。また、タイムアウトの設定はオプションではありません。
c - この一時的な char* 変数を構造体にコピーして、永続的なストレージを増やすにはどうすればよいですか?
私はスレッドプールを実装しようとしています.ftwのOnOpen関数内に存在する一時的なインスタンスよりも永続的に保存されるように、作業するはずのファイルパスを取得するのにかなりの問題があります. . 処理されるすべてのファイルパスに対して malloc を実行することは許可されていません。
これは現在、OnOpen がスレッドに一時データを渡さないようにしようとしているものであり、memcpy でクラッシュする理由について混乱しています。
memcpy を実行する char* の余分な配列を作成せずに、編集中の一時変数からデータを保護する方法を知りたいです。
編集:素晴らしいフィードバックですが、それは私が必要としているものではありません.
以下に、私が問題を抱えているコード、つまりスレッドプールとタスク構造体の使用方法に関連するものをいくつか追加します。それについて行くことができます:
私のスレッドプールは 8 つのスレッドで構成されており、これは私の taskQueue のサイズでもあります。
以前は持って.arg = strcpy(temp, path)
いましたが、temp は一時的であるため、hashFunc に不正なデータが出力されました。
各スレッドは、互いに干渉する危険を冒さないように、動作する Task 構造体の独自のコピーを持つことになっています。
最終編集:私はそれを機能させました。これがどのように見える必要があるかです: